我有苹果和梨——它们都有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];
当然,没有人喜欢腐烂的水果,所以我们只摘 fresh 的:
const freshFruits = fruits.filter((fruit) => !fruit.isDecayed);
不幸的是,Typescript告诉我:
Cannot invoke an expression whose type lacks a call signature. Type '((callbackfn: (value: Apple, index: number, array: Apple[]) => any, thisArg?: any) => Apple[]) | ...' has no compatible call signatures.
这里出了什么问题——只是Typescript不喜欢 fresh 水果,还是这是一个Typescript错误?
You can try it yourself in the official Typescript Repl.