TypeScript · Senior · Pytanie 51 z 75
Dlaczego to się kompiluje i gdzie jest dziura w poprawności?
const dogs: Dog[] = [];
const animals: Animal[] = dogs;
animals.push(new Cat());- ✓Poprawna odpowiedź: Tablice są dla wygody traktowane kowariantnie, więc zapis przez szerszy typ może włożyć
CatdoDog[] - 2To się nie kompiluje
- 3TypeScript kopiuje tablicę przy przypisaniu
Wyjaśnienie
Jeśli API tylko czyta, przyjmuj readonly Animal[] - nie da się przez nie nic zapisać, więc problem znika.