2016-05-15 7 views

Antwort

218

Gemäß den TypeScript Language Specification:

Im Gegensatz zu einer Interface-Deklaration, die immer einen benannte Objekttyp führt, kann eine Art Alias ​​Erklärung einen Namen für jede Art von Typ, einschließlich primitiver, Vereinigung einzuführen, und Kreuzungstypen.

Die Spezifikation geht weiter zu erwähnen:

Interface-Typen viele Ähnlichkeiten haben Aliase für den Objekttyp Literale zu geben, aber da Interface-Typen mehr Funktionen bieten sie im allgemeinen bevorzugt Aliase zu geben. Zum Beispiel kann die Schnittstelle Typ

interface Point { 
    x: number; 
    y: number; 
} 

könnte als Typ alias

type Point = { 
    x: number; 
    y: number; 
}; 

jedoch geschrieben werden, dabei bedeutet die folgenden Fähigkeiten verloren gehen:

  • Eine Schnittstelle kann in benannt werden eine Klausel extends oder implements, aber ein Typalias für ein Objekttypliteral kann nicht.
  • Eine Schnittstelle kann mehrere zusammengeführte Deklarationen enthalten, ein Typalias für ein Objekttypliteral kann dies jedoch nicht.
+30

Was bedeutet "mehrere zusammengeführte Deklarationen" im zweiten Unterschied? – jrahhali

+2

@jrahhali Ich denke, das * augmentierte * Szenario in [diesem SO-Thread] (http://stackoverflow.com/questions/36782896/in-typescript-what-ist-the-difference-winter-type-and-interface) antwortet Ihre Frage – superjos

+8

@jrahhali Wenn Sie Schnittstelle zweimal definieren, führt Typoskript sie in eins zusammen. –

Verwandte Themen