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

Typescript 无法调用传递给方法的联合类型值,typescript,typescript1.4,Typescript,Typescript1.4,以下代码将产生错误:无法调用其类型缺少调用签名的表达式 如果接口相同(例如都包含“a”),则一切正常。 为什么? 现在stuff是Foo数组和Bar数组的联合。您正试图对照类型(Foo或Bar)的项目进行检查。如果stuff具有实际类型Foo[]并且thing具有实际类型Bar,则类型不匹配 填充的类型应该是数组(Foo或Bar) 现在stuff是Foo数组和Bar数组的联合。您正试图对照类型(Foo或Bar)的项目进行检查。如果stuff具有实际类型Foo[]并且thing具有实际类型Bar,

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

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


现在
stuff
是Foo数组和Bar数组的联合。您正试图对照类型(Foo或Bar)的项目进行检查。如果
stuff
具有实际类型Foo[]并且
thing
具有实际类型Bar,则类型不匹配

填充的类型应该是数组(Foo或Bar)


现在
stuff
是Foo数组和Bar数组的联合。您正试图对照类型(Foo或Bar)的项目进行检查。如果
stuff
具有实际类型Foo[]并且
thing
具有实际类型Bar,则类型不匹配

填充的类型应该是数组(Foo或Bar)


填充物应该是[foo或bar数组]而不是[(foo数组)或(bar数组)]?(我不熟悉打字稿,所以可能我误读了打字签名)的确,你是对的。请随意将其发布为答案,我会将其标记为答案。内容应该是[一组(Foos或bar)]而不是[(一组Foos)或(一组bar)]?(我不熟悉打字稿,所以可能我误读了打字签名)的确,你是对的。请随意将其作为答案发布,我会将其标记为答案。
interface Foo { a:string }
interface Bar { b:string }

var stuff: Foo[] | Bar[];

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