MST

星途 面试题库

面试题:TypeScript默认参数在复杂类型系统及泛型中的深度应用

给定一个复杂的泛型函数,要求在其中合理地使用默认参数,该函数需处理多种数据类型(如数组、对象等),且要保证类型安全和代码的可维护性。请编写完整的TypeScript代码,并详细解释你对默认参数类型的设计思路,以及如何通过类型推断和约束保证整个函数的正确性。
43.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义泛型函数,处理多种数据类型
function processData<T = any>(data: T = null as unknown as T, option: string = 'defaultOption'): T {
    // 函数逻辑,这里简单返回数据
    return data;
}

// 示例调用
const arrayResult = processData([1, 2, 3]);
const objectResult = processData({ key: 'value' });

默认参数类型设计思路

  1. T 泛型默认类型为 any:这样在没有显式指定泛型类型时,函数可以接受任意类型的数据。但这只是一种兜底方案,实际使用中鼓励显式指定类型以增强类型安全。
  2. option 参数类型为 string 且有默认值 'defaultOption':这是一个简单的选项参数,用于控制函数的一些行为。由于它是相对固定的行为控制参数,类型确定为 string 并给定默认值,方便调用者在不需要特殊配置时直接使用默认行为。

通过类型推断和约束保证函数正确性

  1. 类型推断:当调用者传递具体的数据时,TypeScript 会根据传入的数据类型自动推断 T 的类型。例如,当传入 [1, 2, 3] 时,T 会被推断为 number[],从而保证返回值类型的正确性。
  2. 约束:虽然 T 默认是 any,但一旦调用者显式指定了泛型类型,函数就会按照指定的类型进行严格检查。例如,如果指定 Tstring,那么传入非字符串类型的数据就会报错,从而保证了类型安全。同时,option 参数固定为 string 类型,防止传入其他类型导致错误。