MST

星途 面试题库

面试题:TypeScript中受限多态的类型参数约束实现

在TypeScript中,假设你要创建一个函数,这个函数接受两个同类型的参数并返回它们的和。但这个类型必须是数值类型(number 或者 bigint)。请用受限多态的方式实现这个函数,并说明类型参数约束在这个场景中的作用。
45.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function add<T extends number | bigint>(a: T, b: T): T {
    if (typeof a === 'number' && typeof b === 'number') {
        return (a + b) as T;
    } else if (typeof a === 'bigint' && typeof b === 'bigint') {
        return (a + b) as T;
    }
    throw new Error('Both parameters must be of the same numeric type');
}

类型参数约束在这个场景中的作用:

  1. 保证类型安全:通过T extends number | bigint约束,确保传入函数的参数ab只能是number或者bigint类型,避免传入其他不支持加法运算的类型,如字符串、对象等,从而提高代码的可靠性和稳定性。
  2. 支持多态:虽然限制了类型必须是数值类型,但可以接受number或者bigint,实现了一定程度的多态。使得函数可以处理不同数值类型的输入,而不需要为numberbigint分别编写不同的函数。
  3. 返回值类型一致性:约束类型参数后,返回值类型可以确定为与参数类型相同的T,确保返回值类型与输入参数类型一致,符合预期。