Die Typen von Klassen und Vererbung wurden in TypeScript eingeführt, um objektorientierte Muster zu unterstützen, die in anderen Sprachen (Java, C#) üblich sind. TypeScript ermöglicht es, Klassen mit explizit festgelegten Typen für Eigenschaften und Methoden zu erstellen und Vererbung mit Typensicherheit zu implementieren.
Ohne explizite Typisierung in JavaScript werden Fehler, die mit der falschen Verwendung von Eigenschaften zusammenhängen, während der Kompilierung nicht erkannt. Probleme treten auf, wenn Methoden/Eigenschaften von Nachkommen überschrieben werden, dabei der Vertrag der Basisklasse verletzt wird und bei falscher Verwendung von protected/private.
TypeScript ermöglicht die Verwendung der Schlüsselwörter public, private, protected, explizit Typen für Eigenschaften und Methoden anzugeben, Klassen mit extends zu vererben und Schnittstellen zu implementieren.
Beispielcode:
class Animal { public name: string; protected age: number; private secret: string = "hidden"; constructor(name: string, age: number) { this.name = name; this.age = age; } speak(): void { console.log(`${this.name} macht ein Geräusch.`); } } class Dog extends Animal { constructor(name: string, age: number) { super(name, age); } speak(): void { console.log(`${this.name} bellt.`); } } const dog = new Dog("Rex", 4); dog.speak(); // Rex bellt.
Wesentliche Merkmale:
Was passiert, wenn man den Typ eines Klassenfeldes nicht angibt?
TypeScript versucht, den Typ aus dem zugewiesenen Wert abzuleiten, sofern vorhanden. Wenn nicht, wird der Typ any, was die Sicherheit des Codes verringert.
class Test { value; constructor(v: number) { this.value = v; } }
value wird vom Typ any sein, wenn kein Standardwert angegeben ist — eine potenzielle Lücke in der Typensicherheit.
Kann der Zugriffsmodifikator einer vererbbare Methode geändert werden?
Ja, aber nur, wenn er verstärkt wird (zum Beispiel von public zu protected oder private — nicht möglich), von private zu public ist nicht erlaubt, da private Mitglieder nicht vererbt werden. Dies führt zu einem Kompilierungsfehler.
Kann man in TypeScript von mehreren Klassen erben?
Nein, Mehrfachvererbung von Klassen ist nicht erlaubt. Man kann mehrere Schnittstellen implementieren, aber nur von einer Klasse erben.
Im Projekt wurden alle Klassen ohne Zugriffsmodifikatoren und explizite Typen zur Beschleunigung der Entwicklung erklärt.
Vorteile:
Nachteile:
Alle Mitglieder der Klasse sind sorgfältig typisiert, verwenden private/protected/public, strenge Typisierung von Eigenschaften und Methoden.
Vorteile:
Nachteile: