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

如何简化含三个0/1参数的TypeScript函数中的if语句?

简化三参数if语句的TypeScript函数实现

针对你提供的函数,我们可以通过逻辑合并或映射表两种方式简化代码,让逻辑更清晰易维护:

方式一:逻辑合并(精简条件判断)

观察原函数的条件,提取重复判断逻辑,减少分支数量:

export const handleStepComplete = (userSave: number, concur: number, signature: number) => {
  // 所有signature为0的情况
  if (signature === 0) {
    return userSave === 0 
      ? { completed: false, active: true, error: false } 
      : { completed: true, active: true, error: false };
  }

  // signature为1的情况
  return userSave === 1 && concur === 0 
    ? { completed: false, active: false, error: true } 
    : {}; // 原函数未覆盖的参数组合,可根据业务需求补充默认返回
};

方式二:映射表(直观的条件-结果对应)

将参数组合与返回结果直接映射,适合分支明确的场景,可读性更强:

// 定义参数组合到结果的映射关系
const resultMap: Record<string, { completed: boolean; active: boolean; error: boolean }> = {
  '000': { completed: false, active: true, error: false },
  '100': { completed: true, active: true, error: false },
  '110': { completed: true, active: true, error: false },
  '101': { completed: false, active: false, error: true },
};

export const handleStepComplete = (userSave: number, concur: number, signature: number) => {
  // 将三个参数拼接为字符串作为映射键
  const key = `${userSave}${concur}${signature}`;
  // 返回对应结果,未覆盖的组合可返回默认值
  return resultMap[key] || {};
};

补充说明

原函数未覆盖所有参数组合(如001、010、011、111),简化后的代码可根据实际业务需求补充这些场景的默认返回值。若参数后续可能扩展为非0/1的值,映射表方式会更易于维护,只需新增键值对即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:20:28