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

TypeScript联合类型为何无法通过value推断test的具体类型?

问题解答

在当前新版本的TypeScript中,你给出的代码里类型推断是正常的——当通过typeof x.value === "string"判定后,x会被自动窄化为Type1类型,x.test的类型应该是number。如果你的环境中显示x.test为number | boolean,可能是以下原因:

  • TypeScript版本过低:旧版本的TypeScript对联合类型中基于属性typeof检查的类型窄化支持不完善,升级到4.0及以上版本即可解决。
  • 编辑器类型服务异常:像VS Code这类编辑器的TypeScript语言服务可能出现缓存问题,重启编辑器或重新加载窗口就能修复。
  • 代码存在干扰逻辑:如果代码中有其他修改x的逻辑,或者MyType被其他代码重新定义,可能会干扰类型推断结果。

如果需要临时绕过这个问题,可以使用类型断言明确指定类型:

console.log(x.value, typeof (x as Type1).test);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:55:20