Felder, Konstruktoren, Parameter Properties, public, protected, private und #private, readonly, abstract und implements. Teste in einer Live-Matrix, wer jedes Member erreichen kann.
Eine TypeScript-Klasse ist eine JavaScript-Klasse mit typisierten Feldern und Zugriffsregeln. public-Member sind überall erreichbar, protected-Member innerhalb der Klasse und ihrer Unterklassen, private-Member nur innerhalb der Klasse. Diese drei Prüfungen gibt es nur zur Compile-Zeit. Ein #name-Feld ist auch im laufenden JavaScript privat, und readonly verhindert Schreibzugriffe nach dem Konstruktor.
Klassen-Schlüsselwörter und was sie bewirken
Wähle einen Modifier, und die Matrix zeigt fünf Wege, auf denen Code dieses Member erreichen könnte, jeweils mit dem Ergebnis von tsc. Die Zeile mit der Klammer-Schreibweise überrascht viele: Die Compile-Zeit-Modifier lassen sich mit einem String-Schlüssel umgehen, ein #-Feld dagegen nicht.
private ist eine TypeScript-Prüfung. Sie verschwindet aus der Ausgabe, und obj["secret"] kompiliert trotzdem und liest den Wert. Ein #secret-Feld ist ein privates JavaScript-Feld: Kein String-Schlüssel erreicht es, und Code außerhalb der Klasse kann es zur Laufzeit nicht lesen.
Eine Abkürzung, die ein Feld aus einem Konstruktorparameter deklariert und zuweist. constructor(private readonly id: string) {} erzeugt ein privates readonly-Feld id, ganz ohne Rumpf. Das Präfix kann public, protected, private oder readonly sein.
Nein. implements prüft nur, ob die fertige Klasse zum Interface passt. Methodenparameter brauchen trotzdem eigene Annotationen; lässt du eine im strict-Modus weg, ist das ein implicit-any-Fehler, obwohl das Interface den Typ bereits nennt.
strictPropertyInitialization, das strict aktiviert, verlangt, dass jedes deklarierte Feld in der Deklaration oder im Konstruktor gesetzt wird. Gib ihm einen Wert, mach es optional oder setze ! hinter den Namen, wenn etwas anderes es vor der Verwendung setzt.
Nimm eine abstrakte Klasse, wenn Unterklassen echten Code teilen sollen, etwa eine Methode, die einen abstrakten Hook aufruft. Ein Interface enthält keinen Code, und eine Klasse kann mehrere davon implementieren, daher eignet es sich zum Beschreiben von Formen.
Der Konstruktor deklariert zwei Felder in seiner Parameterliste. Der Cache ist ein #-Feld, daher kann nichts außerhalb der Klasse ihn lesen oder leeren.
describe ist gemeinsamer Code; area ist der Hook, den jede Form liefern muss. Mit aktivem noImplicitOverride ist das Schlüsselwort override bei area in Circle Pflicht.
Das Interface stellt sicher, dass die Klasse send mit der richtigen Form hat, aber der Parameter braucht trotzdem seine eigene Typannotation.
Keine Einschränkungen. Den Modifier wegzulassen bedeutet dasselbe.
In den eigenen Methoden von Account
In einer Methode von Savings
Außerhalb, mit Punkt
Außerhalb, mit String-Schlüssel
Außerhalb, mit neuer Wertzuweisung
Offen für die Klasse und ihre Unterklassen. Ein String-Schlüssel kommt trotzdem an der Prüfung vorbei, weil es nur eine Typregel ist.
In den eigenen Methoden von Account
In einer Methode von Savings
Außerhalb, mit Punkt
Außerhalb, mit String-Schlüssel
Außerhalb, mit neuer Wertzuweisung
Sogar für Unterklassen gesperrt, aber nur bei der Typprüfung. Die Klammer-Schreibweise kompiliert, und der Wert ist zur Laufzeit lesbar.
In den eigenen Methoden von Account
In einer Methode von Savings
Außerhalb, mit Punkt
Außerhalb, mit String-Schlüssel
Außerhalb, mit neuer Wertzuweisung
Ein privates JavaScript-Feld. Kein String-Schlüssel benennt es, daher scheitert jeder Weg von außen, und die Engine erzwingt dieselbe Regel zur Laufzeit.
In den eigenen Methoden von Account
In einer Methode von Savings
Außerhalb, mit Punkt
Außerhalb, mit String-Schlüssel
Außerhalb, mit neuer Wertzuweisung
Jeder darf es lesen; niemand darf es nach der Konstruktion zuweisen, nicht einmal die eigenen Methoden der Klasse.
In den eigenen Methoden von Account
In einer Methode von Savings
Außerhalb, mit Punkt
Außerhalb, mit String-Schlüssel
Außerhalb, mit neuer Wertzuweisung
Modifier wählen
Zugriff auf ein {v}-Member
Verwendet von
Code
tsc-Ergebnis
Kompiliert
Kostenlos starten · Keine Kreditkarte nötig