Tapuscrit différence dans l'interface et le type de

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

 

Je suppose que tu aimes

Origine www.cnblogs.com/liuzhenwei/p/12530928.html
conseillé
Classement