【问题标题】:Check if array contains an instance of a particular class in TypeScript检查数组是否包含 TypeScript 中特定类的实例
【发布时间】:2021-08-30 09:23:57
【问题描述】:

我来自 .net 背景,是 typescript 的新手。我有一个数组,其中包含来自实现公共接口的不同类的对象。我想检查数组是否包含来自特定类的对象。我尝试使用“includes”和“instanceof”的组合,但没有成功。提前致谢。

假设类“C1”、“C2”和“C3”实现了接口“Int1”。 数组'array01'可以保存实现接口'Int1'的类的对象。

private static array01: Int1[] = [];

if(array01.includes(instanceof C1)) ??? //Want to check if 'array01' contains an object of class 'C1'.

【问题讨论】:

    标签: javascript arrays typescript instanceof typeof


    【解决方案1】:

    试试

    private static array01: Int1[] = [];
    
    if(array01.find(arr => arr instanceof C1)) {}
    

    对于数组过滤器

    private static array01: Int1[] = [];
    
    if(array01.filter(arr => arr instanceof C1).length) {}
    

    【讨论】:

    • 似乎在我使用的打字稿版本中,“查找”不可用。我可以改用“过滤器”吗?语法会一样吗?
    • 是的,它将是相同的,但是您必须检查过滤数组的长度 > 0。让我更新答案
    【解决方案2】:

    instanceof 是一个运算符,您不能将其作为要搜索的值传递给includes

    您最有可能寻找使用带有回调的the .some() method

    if (array01.some(obj => obj instanceof C1)) …
    

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      相关资源
      最近更新 更多