用于类型检查和编译错误的Typescript外部函数

时间:2017-07-11 11:17:23

标签: javascript typescript typescript-typings typescript2.0

事实: 我正在使用TS v.2.3.4。我已经创建了一个函数来检查定义了一个veriable的天气(它需要variable作为参数并返回'undefined' !== typeof variable)。和平的蛋糕。

export function IsDefined(variable: any): boolean {
    return 'undefined' !== typeof variable;
}

问题:下面的代码会在2.行产生警告。 waring说对象可能未定义

if (IsDefined(myVar)) {
    myVar.mockProperty = "asdf"; //Object (myVar, obviously) is possibly undefined
}

问题:有没有办法告诉TS编译器IsDefined()方法检查变量是否有未定义的值,所以它不会用假信息发出警告?还有其他方法可以解决这个问题吗?

我知道并且我不愿意使用的变通办法,因为它们会使代码变得不洁净:

  • (<myType>myVar).mockProperty = "asdf";
  • if ("undefined" !== typeof myVar) {

1 个答案:

答案 0 :(得分:1)

你想在这里使用一个类型守卫。更改IsDefined的定义:

export function IsDefined(variable: any): variable is {} {
    return 'undefined' !== typeof variable;
}

现在编译器会知道从true返回IsDefined的任何内容都是对象,而不是undefined