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 的返回值。