面试题答案
一键面试- 泛型类型参数定义与约束:
- 定义两个泛型类型参数。
- 第一个泛型类型参数
T
表示对象数组中对象的类型。这里T
被约束为object
,确保传入的是对象类型。 - 第二个泛型类型参数
K
表示属性名的类型。K
被约束为keyof T
,这意味着K
必须是T
类型对象的属性名。这样就能在编译时检查属性名是否存在于对象类型中。
- 第一个泛型类型参数
- 定义两个泛型类型参数。
- 函数具体实现代码(以TypeScript为例):
function getPropertyValues<T extends object, K extends keyof T>(arr: T[], prop: K): T[K][] {
return arr.map((obj) => obj[prop]);
}
上述代码中,getPropertyValues
函数接受一个 T
类型的对象数组 arr
和一个 K
类型的属性名 prop
。通过 map
方法遍历数组,提取每个对象中指定属性 prop
的值,并组成新的数组返回。新数组的类型为 T[K][]
,即每个元素的类型是 T
类型对象中 K
属性的类型。