You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

令人抓狂的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)来触发报错。

技术疑问

  1. 该代码写法是否存在问题,还是TypeScript本应正确处理此场景?
  2. 有没有无需到处使用直接类型断言的合适替代方案?

内容的提问来源于stack exchange,提问作者Nathan Wall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:30:05