为何tsconfig.json中strict设为false时会触发TS7030错误?
问题解答
原因拆解
这是TypeScript中strictNullChecks与noImplicitReturns两个规则交互产生的行为差异:
开启
strict: true时strict模式会自动启用strictNullChecks,此时TypeScript会严格处理undefined类型。你的函数返回类型明确包含undefined,return;语句会被识别为返回undefined,完全匹配string | null | undefined的声明要求,因此noImplicitReturns规则不会触发错误。关闭
strict: false时strictNullChecks会随之关闭,TypeScript不再将undefined视为有效的类型成员——哪怕你在返回类型里明确声明了它。这时return;会被判定为“没有返回符合声明类型的值”,而noImplicitReturns要求所有代码路径都必须返回匹配声明类型的内容,因此触发TS7030错误。
总结
本质是关闭strict后,TypeScript无视了你返回类型中的undefined,只认可string和null类型,空return语句不符合这两者,因此被规则判定为违规。
内容的提问来源于stack exchange,提问作者Will Huang
相关产品推荐
相关产品推荐

