如何在TypeScript中使用具有接口联合类型的实例?

莫森

考虑以下TypeScript代码:

class A {public name: string = 'A';}
interface B {num: number;}

class Foo {
    get mixed(): Array<A | B> {
        const result = [];
        for (var i = 0; i < 100; i ++) {
            result.push(Math.random() > 0.5 ? new A() : {num: 42});
        }
        return result;
    }

    print(): string {
        return this.mixed.map(item => {
            if (item instanceof A) {
                return item.name;
            }

            return item.num;    
        }).join('\n');
    }
}

print函数内部,我需要根据的类型返回不同的值item对于type A,它很容易使用instanceof,但是对于B我来说,instanceof因为它B是一个接口,所以不能使用

打字稿不明白,它说行item.numitem类型是B肯定的,也没有必要抱怨。

马丁·维斯蒂卡(Martin Vseticka)

您可以使用

return (<B>item).num;

给TypeScript编译器一个提示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Typescript 中使用具有联合类型的 Mixin

如何在目标C中使用具有通用类型的Swift类

如何在 useReducer 中使用具有必填字段的泛型类型?

如何在 Electron 上使用具有 TypeScript 类型支持的内部函数或条件?

如何在Python 3.6中使用具有不同值类型的Dict使用静态类型检查?

Typescript:如何从联合类型中排除仅具有可选属性的接口

Typescript - 使用泛型扩展具有联合类型属性的接口

如何在 C# 中使用反射创建接口的类型变量,具有上述接口的泛型类型?

如何在Clojure中使用具体类型参数实现接口?

在Moq中使用具有CQRS模式的通用接口

如何在类型化数据集xsd中使用具有相同表结构的不同数据库

如何在Typescript中使用具有参数value或value []的两个参数编写泛型函数

如何在 TypeScript 的通用类型参数中使用联合类型作为约束

TypeScript:如何获取和使用具有多个声明的类方法的类型

如何在Python 3中使用具有多个参数的多重处理?

如何在 Flask 中使用具有 sudo 权限的 python 包?

如何在python中使用具有相同ID的新记录更新csv

如何在R中的data.table中使用具有累积值的移位计算

如何在画布中使用具有CSS中描述的字体的文本元素

如何在Laravel中使用具有多态关系的“分组依据”?

如何在 Windows 中使用具有neato风格的graphviz?

如何在mix.exs中使用具有语义版本控制的Git标签?

如何在WPF项目中使用具有绝对路径的Image?

如何在C中使用具有相同名称的不同枚举

如何在Prettier中使用具有多个扩展名的文件?

如何在Web API请求的FromBody ViewModel中使用具有EnumMember属性的枚举?

如何在较大的架构中使用具有参考的较小架构?

如何在jquery或angularjs中使用具有特定属性的标签名称获取元素

如何在Android Studio中使用具有不同应用名称的口味?