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

TypeScript枚举OR判断报错:类型无重叠条件始终返回true如何解决

报错原因

你写的逻辑用了||(或运算符),而单个segment枚举值不可能同时等于Segment.Y和Segment.C两个不同的枚举项:

  • 如果当前值是Segment.Y,那么this.program.segment !== Segment.C条件成立,整个||运算结果为true
  • 如果当前值是Segment.C,那么this.program.segment !== Segment.Y条件成立,整个||运算结果为true
  • 如果当前值是其余三个枚举项,两个不等于的判断同时成立,运算结果还是true

因此这个条件永远返回true,完全阻断了后续逻辑的执行,TypeScript识别到两个枚举值类型无重叠,才会抛出对应的类型错误。

解决方案

有两种常用的写法可以实现你要的逻辑:

  1. 替换逻辑运算符为&&(且运算符)
    只有当值既不是Y也不是C的时候,才触发返回,完全匹配你的需求:
if (this.program.segment !== Segment.Y && this.program.segment !== Segment.C) return text
  1. 使用数组includes方法(可读性更高,更易扩展)
    把需要放行的枚举值统一放到数组中,判断当前值不在放行列表中时返回text,后续要新增放行枚举值只要修改数组即可:
if (![Segment.Y, Segment.C].includes(this.program.segment)) return text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:57:05