TypeScript · Senior · Frage 51 von 75
Warum kompiliert das, und wo ist die Lücke in der Typsicherheit?
const dogs: Dog[] = [];
const animals: Animal[] = dogs;
animals.push(new Cat());- 1TypeScript kopiert das Array bei der Zuweisung, also geht nichts kaputt
- 2Es kompiliert nicht: Arrays sind in TypeScript strikt invariant
- 3Kovariante Arrays: über einen breiteren Alias landet eine
CatinDog[]
Antwort zeigen
Richtige Antwort: Kovariante Arrays: über einen breiteren Alias landet eine Cat in Dog[]
Erklärung
Nimmt man in APIs, die nur lesen, readonly Animal[] an, vermeidet man das Problem, weil darüber nichts geschrieben werden kann.