https://github.com/SunshowerC/blog/issues/7
Nous utilisons toujours le tapuscrit à l' interface d'utilisation et le type, les spécifications officielles disent un peu moins de deux différences
Une interface peut être un nom dans la clause EXTENDS ou les outils, mais du type Alias CAN un objet du type non littérale. Une
interface diposez avoir plusieurs Fusionné déclarations, mais un alias de type pour un littéral de type d'objet ne peut pas. ,
mais pas trop d' exemples spécifiques.
Ming n'a pas dit des mots sombres, directement sur la différence.
Le même point
peut décrire un objet ou une fonction
Interface
interface , l'utilisateur {
name: String
Âge: Number
}
Interface SETUSER {
(name: String, Âge: Number): void;
}
Type
tapez l'utilisateur = {
name: String
Âge: Number
};
Type setUser = (nom: string, âge : nombre): void;
Développez (étend) le type croix (Types intersection)
peut d'interface étend, mais le type n'est pas autorisé étend et mettre en œuvre, mais le type d'interface peut être obtenue manquant étendre à travers le comportement en croix, et les deux ne sont pas indépendants les uns des autres, qui est boîte d'interface de type étend, le type peut également traverser le type d'interface.
Bien que l'effet est presque, mais deux syntaxe différente.
interfacer l'étend l' interface
interface , le nom {
name: String;
}
interface , l'utilisateur extends le nom {
âge: Number;
}
type et type croisé
tapez le nom = {
name: String;
}
tapez l'utilisateur = Nom & {âge: Number}, l'
interface extends de type
tapez le nom {=
name: String;
}
interface extends l'utilisateur {le nom
Âge: Number;
}
interface de type et Intersection
Nom de l' interface {
name: chaîne;
}
Type utilisateur = Nom & {
âge: nombre;
}
Différents
types ne peut pas l' interface
type peut déclarer alias de type de base, le type de joint, d' autres types de tuples
// alias typebase
type String Name =
@ typejoint
Interface Dog {
Wong ();
}
Interface Cat {
Miao ();
}
type Pet = Chien | Chat
type // définir un tableau pour chaque emplacement spécifique
du type PetList = [chien, l'animal]
de la déclaration de type peut également être utilisé pour obtenir une instance du type typeof assignation
// lorsque vous souhaitez obtenir le type d'une variable,utilisation typeof
le laisser div = document.createElement ( 'div');
type B = div typeof
autre opération Sao
Type StringOrNumber = chaîne | Nombre,
tapez le texte String = | {text: String};
type = NAMELookup le Dictionnaire <String, la personne>;
Type callback <T> = (Data: T) => vide;
Type pair <T> = [T, T];
Saisissez les coordonnées = paire <Number>; le
type d' arbre <T> = T | {left: Arbre <T>, à droite: Arbre <T>}, l'
interface peut type non
- interfacer de déclarer la fusion
interface , l'utilisateur {
name: String
Âge: Nombre
}
interface entre l'utilisateur {
Sexe: String
}
/ *
l'interface utilisateur {
name: String
Âge: Number
Sexe: String
}
* /
résumé
d'une manière générale, si vous ne savez pas quand utiliser l' interface / type, l' interface peut atteindre, à l' interface d'utilisation, Si vous ne pouvez pas utiliser le type. Pour plus de détails , voir l'autre document de spécifications officielles