TypeScript erweitert JavaScript um objektorientierte Programmierungsfunktionen wie Klassen, abstrakte Klassen und Mixins. Diese Features ermöglichen eine strukturiertere und flexiblere Code-Organisation.
Abstrakte Klassen dienen als Basis für andere Klassen und können nicht direkt instanziiert werden. Sie sind ideal, um eine gemeinsame Grundlage für eine Gruppe von Klassen zu schaffen:
abstract class Animal {
abstract makeSound(): void;
move(): void {
console.log('Moving along...');
}
}Eine abstrakte Klasse kann abstrakte Methoden und Eigenschaften enthalten, die in jeder abgeleiteten Klasse definiert werden müssen:
abstract class Vehicle {
abstract numberOfWheels: number;
abstract drive(): void;
honk(): void {
console.log('Beep beep!');
}
}Der Konstruktor einer abstrakten Klasse kann geschützt werden, um die direkte Instanziierung zu verhindern:
abstract class Base {
protected constructor() { /* ... */ }
}TypeScript unterstützt keine Mehrfachvererbung direkt, aber Mixins bieten eine alternative Lösung, um Funktionen aus mehreren Quellen zu kombinieren:
class CanSayHi {
sayHi() {
return `Hello, my name is ${this.name}`;
}
}
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
}
applyMixins(Person, [CanSayHi]);
const person = new Person("John Doe");
console.log(person.sayHi()); // "Hello, my name is John Doe"Um Typsicherheit in Mixins zu gewährleisten, ist es oft nützlich, Interfaces zusammen mit Mixins zu verwenden:
interface CanSayHi {
sayHi(): string;
}
class Person implements CanSayHi {
// Rest der Klasse
}