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

TypeScript方法传入合法参数仍抛异常:条件判断问题排查

问题分析与解决办法

你的代码里的条件判断逻辑存在根本性错误,导致不管传入合法还是非法参数,都会触发异常抛出。

错误原因

你写的if (transactionType != 'ADD' || 'REMOVE')或者if (transactionType !== 'ADD' || 'REMOVE')中,'REMOVE'是一个非空字符串,在布尔语境下会被自动转为true。这就意味着整个条件表达式永远为true,所以不管transactionType是什么值,都会执行throw语句。

正确写法

写法一:使用逻辑与(&&)明确判断参数不属于合法类型

async completeAddRemove(transactionType: string) {
    if (transactionType !== 'ADD' && transactionType !== 'REMOVE') {
      throw new Error(`Unrecognised transaction type provided`);
    }
    // 这里写方法的核心逻辑
}

写法二:用数组包含判断,扩展性更好

如果后续需要增加更多合法类型,这种写法更容易维护:

async completeAddRemove(transactionType: string) {
    const validTransactionTypes = ['ADD', 'REMOVE'];
    if (!validTransactionTypes.includes(transactionType)) {
      throw new Error(`Unrecognised transaction type provided`);
    }
    // 这里写方法的核心逻辑
}

进阶优化:用TypeScript字面量类型提前拦截错误

直接通过类型定义限制参数只能是'ADD'或'REMOVE',让TypeScript在编译阶段就检查参数合法性,避免运行时才抛出错误:

async completeAddRemove(transactionType: 'ADD' | 'REMOVE') {
    // 无需额外判断,TypeScript会强制传入的参数只能是指定的两个值
    // 这里写方法的核心逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:01:05