user deklariert habe. TypeScript schlussfolgert den Typ von user als { name: string }. Dies wird als Typinferenz bezeichnet. TypeScript leitet den Typ aus dem zugewiesenen Wert ab.
In JavaScript gibt der Verweis auf eine nicht existierende Eigenschaft eines Objekts ein undefiniertes Ergebnis zurück. In TypeScript gibt der Verweis auf eine nicht existierende Eigenschaft eines Objekts einen Fehler zurück. Das ist eine gute Sache. Es hilft, Fehler frühzeitig zu erkennen. Dieses Verhalten hilft auch, Tippfehler zu erkennen. Wenn du einen Eigenschaftsnamen falsch schreibst, wird TypeScript dies erkennen.
toUppercase eigentlich toUpperCase sein sollte. In JavaScript können diese Arten von Tippfehlern eine Menge Zeit vergeuden.
Schnittstellen und Typ-Aliase
TypeScript unterstützt die Typisierung von Objekten mit zwei anderen Ansätzen: Schnittstellen und Typ-Aliase.Wenn ich vergesse, eine Eigenschaft zuzuweisen, gibt TypeScript einen Fehler zurück.
Wenn ich versuche, eine Eigenschaft hinzuzufügen, die nicht in der Schnittstelle oder dem Typ definiert ist, wird TypeScript fehlschlagen.
Optionale Felder
Wir können auch optionale Felder für Objekte definieren. Dazu verwenden wir den Modifikator?.
undefined sein muss.
Schreibgeschützte Felder
Mit dem Keywordreadonly können wir bestimmte Properties unveränderlich machen.
x- und y-Eigenschaften der Schnittstelle Point schreibgeschützt. Das bedeutet, dass du ihre Werte nicht mehr ändern kannst, nachdem sie festgelegt wurden.
Ein Objektliteral kann mit der Syntax
as const als schreibgeschützt gekennzeichnet werden. Hier ist ein Beispiel:
Interfaces oder Typ-Aliase
Wie wir bereits gesehen haben, kannst du in TypeScript entwedertype oder interface verwenden, um benutzerdefinierte Typen zu definieren. Sie sind oft austauschbar. Oft kannst du beide verwenden. Aber es gibt einige wichtige Unterschiede, also lass uns die Unterschiede untersuchen.
Diese zwei Beispiele sind äquivalent.
Type-Only-Features
Diese folgenden Features können nur mit Typ-Aliasen verwendet werden.Interface-Only-Features
Dahingegen können diese beiden Features nur mitinterface implementiert werden.
Interaktionen zwischen type und interface
Interfaces und Typ-Aliase können jedoch auch miteinander interagieren.
In den meisten Fällen wird beides funktionieren. Aber wir haben gerade einige einzigartige Merkmale von beiden gesehen. Und was ist, wenn sowohl
type als auch interface funktionieren? Normalerweise spielt das keine Rolle. Aber die TypeScript-Entwickler empfehlen diese Faustregel: Bevorzuge, wenn möglich, Schnittstellen, da die TypeScript-Language-Engine manchmal weniger Arbeit für Schnittstellen leisten muss, weil sie im Hintergrund implementiert sind.
Zusammenfassend lässt sich also sagen: Bevorzuge Schnittstellen, wenn es möglich ist, aber verwende Typen, wenn du Funktionen von ihnen nutzen musst.