In TypeScript können Typen sowohl durch interface extends als auch durch type & type (Schnittmengentypen) erweitert werden. Schnittstellen können Typen erweitern und umgekehrt.
Schnittstellen verwenden das Schlüsselwort extends, um Eigenschaften zu erben:
interface Animal { name: string; } interface Bird extends Animal { wings: number; }
Typen können durch & kombiniert werden:
type Animal = { name: string }; type Bird = Animal & { wings: number };
Zudem kann eine Schnittstelle einen anderen Typ erweitern:
type Base = { id: number }; interface Derived extends Base { description: string; }
Besonderheiten:
Kann ein Typ (type) durch eine Schnittstelle erweitert werden oder umgekehrt? Welchen Fehler machen die meisten?
Viele glauben, dass nur Schnittstellen durch Schnittstellen erweitert werden können, aber tatsächlich kann eine Schnittstelle einen Typ erweitern:
type Basic = { flag: boolean }; interface Extra extends Basic { name: string; }
Ein Typ kann jedoch andere Typen nicht durch extends erweitern — nur durch Schnittmengentypen (&).
Geschichte
Geschichte
Geschichte
Das Team glaubte, dass eine Schnittstelle nicht durch einen Typ erweitert werden kann, und um die gemeinsame Funktionalität zu erweitern, schrieben sie alle Strukturen von type in interface um, was viel Zeit und Mühe kostete — obwohl man einfach bestehende Typen auf unkonventionelle Weise erweitern konnte.