打字稿检查属性是否存在

时间:2016-08-31 20:30:17

标签: typescript

我有一个可以将2种不同类型的对象作为参数

的函数
myFunc(arg: (Obj1 | Obj2))

在我的功能中,我需要类似的东西:

let val = ( arg instance of Obj1 ) ? Obj1.propOnlyOnObj1 : Obj2.propOnlyOnObj2;

因为这些属性只存在于其中一个ojbect typescript抛出错误。

2 个答案:

答案 0 :(得分:0)

这应该可以正常工作

class A {
    public field1: string = 'asd';
}

class B {
    public field2: string = 'def';
}

function test(arg: A | B) {
    var value = arg instanceof A ? arg.field1 : arg.field2;
    //use value
}

您可以在此处播放:Typescript playground

答案 1 :(得分:-1)

lodash.has

let val = _.has(Obj1, 'propOnlyOnObj1') ? 
    Obj1.propOnlyOnObj1 : Obj2.propOnlyOnObj2;