如何简化含三个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
相关产品推荐
相关产品推荐

