MST

星途 面试题库

面试题:TypeScript泛型:约束与类型推断

假设你有一个泛型函数,该函数接受两个参数,一个是数组,另一个是索引值。要求确保传入的索引值在数组的有效范围内。请使用TypeScript泛型和类型约束来实现这个函数,并解释类型推断在这个过程中是如何工作的。另外,说明在这个函数中,如果索引值超出范围,如何使用类型系统给出合理的错误提示。
28.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function getElement<T>(array: T[], index: number): T | undefined {
    if (index >= 0 && index < array.length) {
        return array[index];
    }
    return undefined;
}

// 类型推断过程:
// 1. 当调用 getElement 函数时,TypeScript 会根据传入的数组类型推断出泛型参数 T 的具体类型。
// 例如,若传入的数组是 number[],则 T 被推断为 number 类型。
// 2. 函数的返回类型根据 T 以及索引是否越界来确定。如果索引合法,返回类型为 T;如果越界,返回 undefined。

// 类型系统给出错误提示:
// 1. 如果传入的索引值类型不是 number,TypeScript 会直接报错,因为函数定义要求第二个参数为 number 类型。
// 2. 虽然在运行时才能确定索引值是否超出数组范围,但类型系统可通过函数返回类型为 T | undefined 来提示调用者可能返回 undefined,
// 调用者需要进行相应的检查以避免潜在的运行时错误,比如使用可选链操作符来处理可能为 undefined 的返回值。