diferencia 1
- Tanto el uso de interfaz como el tipo son formas comunes de representar una estructura de datos determinada.
- La forma en que se define es ligeramente diferente.
- Cuando se define el tipo, hay un símbolo "="
interface User {
name: string,
age: number
}
type User = {
name: string,
age: number
}
diferencia 2
- interface puede declarar la misma interfaz varias veces. Se fusionarán para formar una definición de interfaz.
- El tipo solo se puede declarar una vez.
interfaz: se puede declarar varias veces y al final se pueden reutilizar juntas;
interface User{
name: string
}
interface User{
age: number
}
let Person: User = {
name: 'myName',
age: 100
}
tipo: si declara nuevamente, se informará un error
type User = {
name: string
}
type User = {
// 报错,Throw error: Duplicate identifier
age: number
}
diferencia 3
- El método de herencia es diferente: la interfaz se hereda mediante el método extender y el tipo se hereda mediante el símbolo &;
interfaz
interface PointX {
x: number
}
interface Point extends PointX {
y: number
}
tipo
type PointX = {
x: number
}
type Point = PointX & {
y: number
}
La interfaz y el tipo pueden extenderse entre sí.
interfaz
type PointX = {
x: number
}
interface Point extends PointX {
y: number
}
tipo
interface PointX {
x: number
}
type Point = PointX & {
y: number
}
Aviso:
- Si desea definir un tipo de variable, use tipo, y si desea poder heredar y restringir, use interfaz.
- Utilice la interfaz si es el autor de una biblioteca o crea definiciones de tipos para una biblioteca externa. A otros les conviene ampliarlos también.
- Si no sabe cuál usar, se recomienda utilizar tipo.