类型检查和编译错误的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;
}
现在的编译器会知道什么返回true
从IsDefined
是一个对象,而不是undefined
。
哇,很好的功能。我一定很匆忙地阅读文档;)谢谢! –