У меня есть яблоко и груши - оба имеют атрибут 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);
К сожалению, Typescript говорит мне:
Невозможно вызвать выражение, тип которого не имеет сигнатуры вызова. Type '((callbackfn: (значение: Apple, индекс: число, массив: Apple []) = > any, thisArg?: any) = > Apple []) |... 'не имеет совместимых сигнатур вызовов.
Что здесь не так - это просто, что Typescript не любит свежие фрукты или это ошибка Typescript?
Вы можете попробовать это самостоятельно в официальном Typescript Repl.