传递给方法的联合类型值无法调用

时间:2015-03-19 17:18:26

标签: typescript typescript1.4

以下代码将产生错误:无法调用类型缺少调用签名的表达式

如果接口相同(例如都包含'a'),一切正常。 为什么呢?

interface Foo { a:string }
interface Bar { b:string }

var stuff: Foo[] | Bar[];

function doStuff(thing: Foo | Bar) {
    var index = stuff.indexOf(thing);
}

1 个答案:

答案 0 :(得分:5)

现在stuff是Foo数组和Bar数组的并集。您正在尝试检查类型(Foo或Bar)的项目。如果stuff的实际类型为Foo []且thing的实际类型为Bar,则表示类型不匹配。

东西的类型应该是(Foo或Bar)的数组。

var stuff: (Foo | Bar)[];