令人抓狂的TypeScript Heisenbug:控制语句类型排除异常
TypeScript 联合类型窄化问题咨询
我将遇到的错误简化为一个基础用例,该用例在TypeScript Playground中有时能复现,但通常需要调整配置才会触发;本地使用tsc编译时则每次都会报错。
代码示例如下:
type Result = { "success": true, "value": string, } | { "success": false, "error": string, }; const x = {"success": true, "value": 'hello'} as Result; if (!x.success) { console.log(x.error); }
若在Playground中未看到错误,可修改TS配置里的Target选项(如切换为ES2017或ES2019)来触发报错。
技术疑问
- 该代码写法是否存在问题,还是TypeScript本应正确处理此场景?
- 有没有无需到处使用直接类型断言的合适替代方案?
内容的提问来源于stack exchange,提问作者Nathan Wall
相关产品推荐
相关产品推荐

