MST

星途 面试题库

面试题:TypeScript宽进严出策略在函数重载中的应用

编写一个TypeScript函数`add`,要求实现宽进严出策略下的函数重载。它可以接受两个数字参数返回数字和,也可以接受两个字符串参数返回拼接后的字符串,且在传入错误类型参数时能正确报错。请给出完整代码,并解释你是如何通过类型定义和实现来体现宽进严出策略的。
48.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: any, b: any): any {
    if (typeof a === 'number' && typeof b === 'number') {
        return a + b;
    } else if (typeof a ==='string' && typeof b ==='string') {
        return a + b;
    } else {
        throw new Error('参数类型错误');
    }
}

宽进严出策略的体现

  1. 宽进:在函数定义部分,通过函数重载定义了多种参数类型组合(number, numberstring, string),这允许函数接受不同类型的输入,表现出“宽进”的特点。同时,实现部分使用了更宽泛的any类型来接受参数,进一步体现宽进,因为any类型可以接受任意类型的数据。
  2. 严出:在返回值类型定义上,对于不同的参数类型组合,明确指定了对应的返回值类型(numberstring),非常严格。并且在实现中,如果传入的参数类型不符合预期,会抛出错误,而不是返回一个模糊或不匹配的结果,这体现了“严出”策略。