TypeScript · Senior · Запитання 51 з 75
Чому це компілюється і де діра в надійності?
const dogs: Dog[] = [];
const animals: Animal[] = dogs;
animals.push(new Cat());- ✓Правильна відповідь: Масиви для зручності вважаються коваріантними, тож запис через ширший тип може покласти
CatуDog[] - 2Це не компілюється
- 3TypeScript копіює масив під час присвоєння
Пояснення
Якщо API лише читає, приймайте readonly Animal[] - через нього нічого не можна записати, і проблема зникає.