Circle und Square. Beide haben eine kind-Eigenschaft, die ein String-Literal ist. Dies wird als Diskriminante bezeichnet. Die kind-Eigenschaft bestimmt, welcher Typ ein Wert ist.
Dies ist nützlich, wenn du eine Funktion hast, die mit beiden Typen arbeitet:
kind eingegrenzt wird. Sobald TypeScript die Art kennt, kennt es die Form des Objekts und weiss daher, welche Felder verfügbar sind.
Zur Verdeutlichung: Die Eigenschaft
kind kann beliebig benannt werden. Der Punkt ist, dass TypeScript intelligent genug ist, um den Typ basierend auf dem Wert einer Eigenschaft einzugrenzen. Andere gebräuchliche Namen für die diskriminierende Eigenschaft sind type und tag.