我有苹果和梨——两者都有 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: (value: Apple,index: number,array: Apple []) = > any,this Arg?: any) = > Apple [] | ...’没有兼容的呼叫签名。
这里出了什么问题-只是打字机不喜欢新鲜水果或这是一个打字机错误?
你可以在官方的 打字稿代表中自己试试。