面试题答案
一键面试// 定义泛型函数getProperty,T表示对象类型,K表示属性名类型
function getProperty<T, K extends keyof T>(obj: T, prop: K): T[K] {
// 返回对象obj中属性prop的值
return obj[prop];
}
// 示例使用
const person = { name: 'Alice', age: 30 };
const name = getProperty(person, 'name'); // name的类型被精确推断为string
const age = getProperty(person, 'age'); // age的类型被精确推断为number
解释:
function getProperty<T, K extends keyof T>(obj: T, prop: K)
:这里定义了泛型T
代表传入对象的类型,K
代表属性名类型,并且通过K extends keyof T
约束K
必须是T
类型对象的属性名。: T[K]
:返回值类型是T
类型对象中属性K
对应的值的类型。这利用了条件类型,根据传入的对象类型和属性名精确推断返回值类型。