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

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

问题描述:

事实: 我正在使用TS v。2.3.4。我创建了一个函数,用于检查天气中是否定义了一个可用的值(它需要variable作为参数并返回'undefined' !== typeof variable)。和平的蛋糕。类型检查和编译错误的Typescript外部函数

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

问题:下面的代码产生。2.线警告。华林说对象可能是undefined

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

问:有没有办法告诉TS编译器IsDefined()方法检查变量对不确定的状态,所以也没有用假信息警告?有没有其他方法可以解决这个问题?

解决方法,我知道,我不愿意用,因为它们使代码不洁:

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

您想在这里使用类型后卫。改变IsDefined定义:

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

现在的编译器会知道什么返回trueIsDefined是一个对象,而不是undefined

+0

哇,很好的功能。我一定很匆忙地阅读文档;)谢谢! –