我有一个实用函数来检查变量是否为空或未定义,如果输入变量通过检查,我希望 TypeScript 缩小输入变量的范围,例如:
public init(input?: string): void {
function isSpecified(input: any): boolean {
return (typeof input !== "undefined") && (input !== null);
}
if (isSpecified(input)) {
let copiedString: string = input; // <-- Error; input is still 'string | undefined'
}
}
正如您所看到的,TS 并没有消除字符串存在的可能性,undefined
即使该函数在逻辑上使之成为不可能。有没有办法让这个函数调用缩小块input
内的范围if
?