MST

星途 面试题库

面试题:TypeScript函数重载与泛型函数的综合应用

编写一个TypeScript函数,实现以下功能:当传入一个字符串参数时,返回该字符串的长度;当传入一个数字数组时,返回数组中所有数字的总和。使用函数重载和泛型函数来实现该功能,并详细解释函数重载和泛型函数在这个场景中的使用方法和优势。
15.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 函数重载声明
function calculateLengthOrSum(param: string): number;
function calculateLengthOrSum(param: number[]): number;

// 泛型函数实现
function calculateLengthOrSum<T extends string | number[]>(param: T): number {
    if (Array.isArray(param)) {
        return param.reduce((acc, num) => acc + num, 0);
    } else {
        return param.length;
    }
}

// 解释
// 函数重载:
// - 函数重载允许我们为同一个函数定义多个不同的函数签名。在这个场景中,我们定义了两个函数签名,
//  一个接受字符串参数并返回字符串长度,另一个接受数字数组参数并返回数组元素总和。
// - 优势在于明确函数在不同参数类型下的行为,提高代码的可读性和可维护性,调用者可以清晰知道不同参数类型的预期返回值。

// 泛型函数:
// - 泛型函数可以在不指定具体类型的情况下,以一种通用的方式编写代码。这里使用泛型T限制参数类型为字符串或数字数组。
// - 优势在于复用性高,通过一个函数实现了对不同类型参数的处理逻辑,避免了重复代码,提高了代码的灵活性和可扩展性。