TypeScript · Senior · Frage 36 von 75
Warum kann man bei a: { x: string } | { y: number } nicht a.x schreiben?
- 1Man muss
azuerst nachanycasten - das ist so gewollt - 2Nur gemeinsame Eigenschaften sind zugänglich; mit
ineingrenzen - 3Eigenschaften von Union-Typen sind immer schreibgeschützt
Antwort zeigen
Richtige Antwort: Nur gemeinsame Eigenschaften sind zugänglich; mit in eingrenzen
Erklärung
Der Compiler weiß nicht, welches Mitglied a ist, und das zweite hat kein x. Nach if ('x' in a) ist der Typ eingegrenzt. Alternativen sind eine gemeinsame Diskriminante (kind) oder ein explizites x?: undefined im zweiten Mitglied.