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