MST

星途 面试题库

面试题:TypeScript 可选参数在函数重载中的应用

请编写一个TypeScript函数,通过函数重载实现接受不同数量参数的功能,其中至少有一个参数是可选的。并解释在这种场景下可选参数的作用以及类型检查机制。
14.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 函数重载声明
function addNumbers(a: number): number;
function addNumbers(a: number, b: number): number;
function addNumbers(a: number, b?: number): number {
    if (b === undefined) {
        return a;
    }
    return a + b;
}

// 调用示例
console.log(addNumbers(5)); // 输出: 5
console.log(addNumbers(5, 3)); // 输出: 8

可选参数的作用

  1. 灵活性:可选参数为函数调用提供了更多的灵活性。在上述例子中,addNumbers函数既可以接受一个参数,也可以接受两个参数。当调用者只需要传入一个参数时,不必提供第二个参数,函数依然能够正常工作。
  2. 减少函数重载数量:如果没有可选参数,我们可能需要为不同参数数量的情况编写更多的函数重载,使代码变得冗长。可选参数机制允许在一个函数实现中处理多种调用场景。

类型检查机制

  1. 重载签名匹配:TypeScript在编译时会根据函数调用的参数数量和类型,匹配最适合的函数重载签名。例如,当调用addNumbers(5)时,会匹配function addNumbers(a: number): number;这个重载签名;当调用addNumbers(5, 3)时,会匹配function addNumbers(a: number, b: number): number;这个重载签名。
  2. 实现检查:函数的实现必须满足所有的重载签名。在上述例子中,addNumbers函数的实现要确保在传入一个参数或两个参数时都能正确处理,并且返回值类型也要符合重载签名的定义。如果实现与重载签名不匹配,TypeScript编译器会报错。