MST
星途 面试题库

面试题:TypeScript 中函数重载与联合类型在参数处理上的差异

请阐述在 TypeScript 中,函数重载和联合类型分别是如何处理函数参数的,并举出简单示例说明两者在参数类型声明和使用场景上的不同。
29.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

函数重载处理函数参数

  • 参数类型声明:通过为同一个函数定义多个函数签名来实现,每个签名可以接受不同类型或数量的参数。例如:
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: any, b: any): any {
    return a + b;
}

这里定义了两个 add 函数的重载签名,一个接受两个 number 类型参数返回 number,另一个接受两个 string 类型参数返回 string。实际实现的函数可以接受任意类型参数,但是调用时会根据传入参数类型匹配对应的重载签名。

  • 使用场景:适用于函数在不同参数类型下有不同行为逻辑的场景。比如上面 add 函数,根据传入参数类型不同执行不同的加法逻辑(数值相加或字符串拼接)。

联合类型处理函数参数

  • 参数类型声明:在参数声明时使用 | 符号将多种可能的类型组合起来。例如:
function printValue(value: number | string) {
    console.log(value);
}

这里 printValue 函数接受一个 number 或者 string 类型的参数。

  • 使用场景:适用于函数在不同参数类型下执行相同或相似行为逻辑的场景。比如 printValue 函数,不管传入 number 还是 string 类型参数,都是简单的打印操作。

两者区别总结

  • 参数类型声明:函数重载通过多个不同签名声明,联合类型在一个参数声明中用 | 组合类型。
  • 使用场景:函数重载用于不同参数类型有不同行为逻辑,联合类型用于不同参数类型有相似行为逻辑。