https://github.com/SunshowerC/blog/issues/7
Siempre usamos la transcripción de la interfaz de uso y el tipo, las especificaciones oficiales dicen que un poco menos de dos diferencia
interfaz Una puede ser un nombre en el extiende cláusula o los implementos, sino una del tipo alias para CAN un objeto del tipo no literal.
Una interfaz puede tener tener múltiples combinada declaraciones, sino un tipo alias para un literal tipo de objeto no puede.
pero los ejemplos no demasiado específicos.
Ming no dijo las palabras oscuras, directamente de la diferencia.
El mismo punto
puede describir un objeto o función
interfaz de
interfaz de usuario de {
name: String
Edad: Número
}
interfaz SETUSER {
(name: String, Edad: Number): void;
}
tipo
escriba el usuario = {
name: String
Edad: Número
};
tipo SETUSER = (name: string, edad : Number): void;
Expandir (se extiende) el tipo cruz (Tipos intersección)
interfaz de lata se extiende, pero no se permite el tipo se extiende y aplicar, pero el tipo de interfaz se puede lograr que falta extenderse a través de un comportamiento de tipo cruz, y los dos no son independientes uno de otro, que es interfaz de lata se extiende tipo, el tipo también puede cruzar el tipo de interfaz.
Aunque el efecto es casi, pero dos sintaxis diferente.
Interfaz La interfaz se extiende
interfaz el nombre {
name: String;
}
interfaz de usuario de la extiende el nombre {
Edad: Número;
}
y de tipo cruz
escriba el nombre = {
name: String;
}
escriba el Usuario = el nombre de & {Edad: Número};
interfaz de la extiende tipo
escriba el nombre {=
name: String;
}
interfaz del usuario extiende la {el nombre
Edad: Número;
}
interfaz de tipo y se cruzan
Nombre de interfaz {
name: String;
}
Tipo de usuario = {Nombre y
edad: Número;
}
Diferente
tipo puede no interfaz
tipo puede declarar alias tipo básico, el tipo de unión, otros tipos de tuplas
// básicos Tipo de alias
tipo String Nombre =
@ tipo de unión
interfaz Dog {
Wong ();
}
interfaz Cat {
Miao ();
}
tipo de Mascota = perro | gato
tipo // definir una matriz para cada ubicación específica
del tipo PetList = [perro, la mascota]
de la declaración de tipo también se puede utilizar para obtener una instancia del tipo typeof asignación
// cuando se quiere obtener el tipo de una variable, el uso typeof
la deje div = document.createElement ( 'div');
tipo B = div typeof
otra Sao operación de
tipo StringOrNumber = cadena | Número;
escriba el texto String = | {text: String};
type = nameLookup el Diccionario <String, la Persona>;
tipo devolución de llamada <T> = (datos: T) => vacío;
tipo Par <T> = [T, T];
escriba Coordenadas = Par <Número>;
tipo árbol <T> = T | {left: árbol <T>, a la derecha: árbol <T>};
interfaz puede Type no
interconectarse para declarar la fusión
interfaz de usuario {
name: String
Edad: Número
}
interfaz del usuario {
Sexo: String
}
/ *
la interfaz de usuario {
name: String
Edad: Number
Sexo: String
}
* /
resumen
en términos generales, si no está seguro cuándo usar interfaz / tipo, interfaz puede lograr, a la interfaz de uso, Si no puede utilizar el tipo. Para más detalles ver el otro documento oficial especificación