MST

星途 面试题库

面试题:TypeScript 中的泛型约束与条件类型

实现一个泛型函数 `getProperty`,该函数接收一个对象和一个属性名,返回该对象对应属性的值。要求使用泛型约束确保传入的属性名确实存在于对象中,同时利用条件类型来精确返回值的类型。请编写完整的TypeScript代码,并对关键部分进行注释。
19.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义泛型函数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

解释:

  1. function getProperty<T, K extends keyof T>(obj: T, prop: K):这里定义了泛型 T 代表传入对象的类型,K 代表属性名类型,并且通过 K extends keyof T 约束 K 必须是 T 类型对象的属性名。
  2. : T[K]:返回值类型是 T 类型对象中属性 K 对应的值的类型。这利用了条件类型,根据传入的对象类型和属性名精确推断返回值类型。