MST

星途 面试题库

面试题:TypeScript中泛型约束的基础应用

请实现一个TypeScript函数 `getLength`,该函数接受一个具有 `length` 属性的泛型参数,并返回其 `length` 值。例如,输入一个字符串或数组都能正确返回长度。请解释这里泛型约束的原理。
34.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function getLength<T extends { length: number }>(arg: T): number {
    return arg.length;
}

泛型约束原理解释

  1. 定义泛型参数T:在函数定义 function getLength<T>(arg: T) 中,T 是一个泛型类型参数。它允许函数接受不同类型的参数,而无需在编写函数时明确指定具体类型。
  2. 泛型约束 T extends { length: number }:这里使用 extends 关键字对泛型 T 进行约束。它表示 T 必须是一个具有 length 属性且该属性类型为 number 的类型。这样就限定了传入 getLength 函数的参数必须拥有 length 属性,比如字符串(string)、数组(Array<any>)等类型都满足此约束,因为它们都有数值类型的 length 属性。如果传入的类型不满足这个约束,TypeScript 编译器就会报错,从而保证函数在运行时对 length 属性的访问是安全的。