In TypeScript kun je types uitbreiden (erfgen) zowel met interface extends als met type & type (intersectietypes). Ook kunnen interfaces types uitbreiden, en omgekeerd.
Interfaces gebruiken het sleutelwoord extends om eigenschappen te erfen:
interface Dier { naam: string; } interface Vogel extends Dier { vleugels: number; }
Types kunnen worden samengevoegd met &:
type Dier = { naam: string }; type Vogel = Dier & { vleugels: number };
Ook kan een interface een ander type uitbreiden:
type Basis = { id: number }; interface Afgeleide extends Basis { beschrijving: string; }
Bijzonderheden:
Kan een type (type) worden uitgebreid via een interface of omgekeerd? Welke fout maken de meesten?
Veel mensen denken dat alleen interfaces via interfaces kunnen worden uitgebreid, maar in werkelijkheid kan een interface een type uitbreiden:
type Basis = { vlag: boolean }; interface Extra extends Basis { naam: string; }
Maar een type kan geen andere types uitbreiden via extends — alleen via intersecties (&).
Verhaal
Verhaal
Verhaal
Het team dacht dat je een interface niet met een type kon uitbreiden, en herschreef alle structuren van type naar interface om gemeenschappelijke functionaliteit uit te breiden, wat veel tijd en moeite kostte - terwijl ze bestaande types eenvoudig op een onconventionele manier hadden kunnen uitbreiden.