为何TypeScript中隐式返回undefined未触发类型检查错误?
为何TypeScript不对隐式返回undefined的函数触发类型检查错误?
示例代码如下:
function foo(x: number): number { if (x != 5) { return x+2; } // undefined returned here } var arg = process.argv[2]; console.log(foo(Number(arg)))
原因说明:
- TypeScript默认没有启用
noImplicitReturns编译选项,这个选项的作用就是检查函数的所有代码分支是否都有明确返回值。未开启该选项时,隐式返回undefined的分支不会被检测出来。 - 在非严格模式下,
undefined被视为所有类型的子类型,所以即便函数声明返回number,返回undefined也不会触发类型不匹配错误。如果开启strictNullChecks选项,这种情况就会报错,因为此时undefined不再是number的子类型。
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

