跳到主要内容

泛型函式範例

將會使用到以下技巧

  • 泛型(generics)的使用
  • 使用 extends 限制泛型
  • keyof 的使用
  • Indexed Access Types 的使用

這個函式名稱是 getObjValue,功能很簡單,它可以接受兩個參數,第一個參數是物件,第二個參數是該物件中的 key,回傳的內容就是物件中的物件中對應到該 key 的 value。最終寫起來會像這樣:

最終結果
// T extends number,表示 T 需要滿足 number
function getObjValue<T, U extends keyof T>(obj: T, key: U): T[U] {
return obj[key];
}

使用方式會像這樣:

const user = {
firstName: 'PJ',
lastName: 'Chen',
age: 35,
isAdmin: true,
};

const product = {
name: 'iPad mini',
price: 14900,
manufacturer: 'Apple',
madeIn: 'China',
};

const isAdmin = getObjValue(user, 'isAdmin'); // true
const manufacturer = getObjValue(product, 'manufacturer'); // 'Apple'