VSCode中null|string联合类型仅被识别为string的原因咨询
问题原因分析
- 核心原因是TypeScript的
strictNullChecks配置未开启。当这个选项关闭时,TypeScript会把null和undefined当作所有类型的子类型,此时null | string会被编译器简化为string——因为null被自动兼容进了string类型,联合类型里的null相当于被忽略了。 - 验证步骤:打开项目根目录的
tsconfig.json文件,查看compilerOptions节点下是否存在"strictNullChecks": true。如果该选项不存在或被设为false,就会出现你遇到的类型识别错误。 - 解决办法:在
tsconfig.json的compilerOptions中添加或修改为"strictNullChecks": true,也可以直接开启"strict": true(strict选项包含了strictNullChecks在内的一系列严格类型检查规则),保存配置后VSCode会重新执行类型检查,此时foo的类型就能正确识别为null | string。
内容的提问来源于stack exchange,提问作者thesnowman
相关产品推荐
相关产品推荐

