TypeScript 之 索引类型
2019-10-12 本文已影响0人
_一九九一_
从对象中获取几个需要的属性的值,然后建立一个集合
let obj = {
a: 1,
b: 2,
c: 3
}
// 需要做的约束:keys里面的属性 一定是obj的属性
// K继承obj所有的属性的联合类型
// 函数返回值 是一个数组 数组元素类型是 属性K里面的类型
function getValue<T,K extends keyof T>(obj: T, keys: K[]):T[K][]{
return keys.map(key => obj[key])
}
console.log(getValue(obj,['a','b']))
console.log(getValue(obj,['e','f'])) // 会报错
//keyof T: 索引类型的查询操作符
//keyof T含义:表示类型T的所有公共属性的自变量的联合类型
interface Obj {
a: number,
b: string
}
let key: keyof obj
// T[K]: 索引访问操作符 表示对象T的属性K所表示的类型
// Obj里面的a是nuber类型 所以value就number类型
let value: Obj['a']
// T extends U: 泛型变量继承类型获取属性