У мене є яблуко та груші - обидва мають isDecayedатрибут:
interface Apple {
color: string;
isDecayed: boolean;
}
interface Pear {
weight: number;
isDecayed: boolean;
}
І обидва типи можуть бути в моїй кошику з фруктами (кілька разів):
interface FruitBasket {
apples: Apple[];
pears: Pear[];
}
Припустимо, поки що мій кошик порожній:
const fruitBasket: FruitBasket = { apples: [], pears: [] };
Тепер ми випадково дістаємо з кошика один вид:
const key: keyof FruitBasket = Math.random() > 0.5 ? 'apples': 'pears';
const fruits = fruitBasket[key];
І звичайно, ніхто не любить гнилі плоди, тому ми збираємо лише свіжі:
const freshFruits = fruits.filter((fruit) => !fruit.isDecayed);
На жаль, машинопис говорить мені:
Не вдається викликати вираз, у типі якого відсутній підпис виклику. Введіть '((callbackfn: (значення: Apple, індекс: число, масив: Apple []) => будь-який, thisArg ?: будь-який) => Apple []) | ... 'не має сумісних підписів дзвінків.
Що тут не так - просто Typescript не любить свіжих фруктів або це помилка Typescript?
Ви можете спробувати самі в офіційному Typescript Repl .