我有这样的课程。
export A {...} export B {...} export C {...}
export type data = A | B | C;
然后我有一个这样的数据数组。
dataArr : Array<data> ;
我是否可以使用类似type of
的东西来检查dataArr
中的元素是否是type of
A
?,或者使用其他方法来达到同样的目的?
我有这样的课程。
export A {...} export B {...} export C {...}
export type data = A | B | C;
然后我有一个这样的数据数组。
dataArr : Array<data> ;
我是否可以使用类似type of
的东西来检查dataArr
中的元素是否是type of
A
?,或者使用其他方法来达到同样的目的?
2条答案
按热度按时间h7wcgrx31#
typeof
只适用于原语,所以这是不可能的。你可以使用类型保护来确定某个对象是A
、B
还是C
,但请记住,如果data
对象的类型太多,类型保护的复杂性会增加,并且可能会出现问题。一个简单的类型保护看起来像这样:
在本例中(这里是playground)你可以看到我是如何故意忽略
myImage
上的类型的,如果你将鼠标悬停在myImage
上,你会看到它没有类型,但是在我的类型保护检查之后,您可以看到它现在确实识别出对象是这个特定的类型。当问题中有多个类型时,您可以在这里进行各种链接,尽管这可能会导致混乱的情况或难以阅读代码,这取决于您如何构建检查。mspsb9vt2#
可以给每个类型增加一个判别属性,然后通过这个属性检查元素的类型,我假设
A
、B
和C
是这样的:这里,
kind
是一个判别属性,它显示了接口的类型,在switch-case
中,你可以得到类型:如果
A
、B
和C
为类:您可以使用
instanceof
关键字: