MST

星途 面试题库

面试题:TypeScript 可选参数在复杂业务逻辑和类型推导中的实践

有一个复杂的业务场景,需要编写一个 TypeScript 函数,该函数接收多个参数,其中部分参数是可选的。函数内部会根据不同参数的组合执行不同的逻辑。例如,如果第一个参数存在且第二个可选参数为特定值时,执行一种计算逻辑;如果第一个参数不存在但第三个可选参数存在时,执行另一种逻辑。请实现这个函数,并详细阐述如何通过 TypeScript 的类型系统来保证参数组合的合法性以及正确推导函数的返回值类型,同时要考虑到代码的可维护性和扩展性。
19.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义函数
function complexBusinessLogic(
  param1: string | undefined, 
  param2: string | undefined, 
  param3: number | undefined
): string | number | undefined {
  if (param1 && param2 === '特定值') {
    // 执行第一种计算逻辑
    return param1.length;
  } else if (!param1 && param3) {
    // 执行另一种逻辑
    return param3 * 2;
  }
  return undefined;
}

// 类型系统保证参数组合合法性及返回值类型推导
// 1. 参数类型定义明确,param1 为 string | undefined,param2 为 string | undefined,param3 为 number | undefined,限制了传入参数的类型。
// 2. 通过条件判断确保不同参数组合下执行相应逻辑,同时根据逻辑返回对应的类型。如第一种逻辑返回 string 的长度为 number 类型,第二种逻辑返回 number 类型,没有匹配逻辑时返回 undefined。
// 3. 函数返回值类型定义为 string | number | undefined,准确涵盖了所有可能的返回值情况。

// 可维护性和扩展性
// 1. 采用清晰的 if - else 条件判断,逻辑清晰,易于理解和维护。
// 2. 若需要添加新的参数组合逻辑,可在函数内部新增 if - else 分支,不会影响现有逻辑,保证了扩展性。