如何检查接口类型的联合参数

时间:2015-11-16 09:04:55

标签: typescript

callbackFn(args: IGovedo | IKrava) {
   // How to check here type of args 
}

在上面的代码中你可以猜到IGovedo和IKrava是接口类型。 如果我使用这种方法,检查args是IGovedo,IKrava,null还是undefined的最佳方法是什么?

使用最新的1.6版本的打字稿。

已编辑:与旧问题不重复,但已解决 - 标记为已解决的答案。

1 个答案:

答案 0 :(得分:3)

您需要的是用户定义的类型保护功能。

interface IGovedo {
    govedo: string;
}

interface IKrava {
    krava: string;
}

function isGovedo(object: any): object is IGovedo {
    return 'govedo' in object;
}

let foo: IGovedo | IKrava;

if (isGovedo(foo)) {
    // foo has type IGovedo;
} else {
    // foo has type IKrava.
}