Typescript 组合并集类型|类型脚本的保护

Typescript 组合并集类型|类型脚本的保护,typescript,Typescript,我有一个函数,可以接受各种对象的数组或鼠标点: function zoomTo(target : Array<Cube|Circle> | createjs.Point) 函数zoomTo(目标:数组| createjs.Point) 但当我试图保护类型时,无论以何种方式,我都会得到一个错误: if (target instanceof Array<Cube|Circle>) if (typeof target === Array<Cube|Circle&g

我有一个函数,可以接受各种对象的数组或鼠标点:

function zoomTo(target : Array<Cube|Circle> | createjs.Point)
函数zoomTo(目标:数组| createjs.Point)
但当我试图保护类型时,无论以何种方式,我都会得到一个错误:

if (target instanceof Array<Cube|Circle>) 

if (typeof target === Array<Cube|Circle>)
if(数组的目标实例)
if(目标类型===数组)
错误:(142,46)TS1005:“(”应为“”


是我做错了什么,还是组合的联合类型对TypeScript来说太多了?

instanceof
只能用于Javascript类的类(即没有任何泛型)

如果在上使用,则会看到以下错误:

“instanceof”表达式的右侧必须是“any”类型或可分配给“Function”接口类型的类型

因此,您可以编写
阵列的目标实例
,但不能编写
阵列的目标实例


在您的情况下,我将通过检查
target
是否是
createjs.Point
的实例来解决问题:

if (target instanceof createjs.Point) {
   // ...
} else {
   // target instanceof Array == true
   // ...
}

不幸的是,这在我的WebStorm编辑器中失败。请忽略我的评论。WebStorm有其专有的TypeScript编译器,即使它在MS Playerd中工作,它也无法验证表达式。