TypeScript 通过 keyof 操作符提取其属性的名称
TypeScript 允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。
keyof 操作符是在 TypeScript 2.1 版本引入的,该操作符可以用于获取某种类型的所有键,其返回类型是联合类型。
keyof
与 Object.keys
略有相似,只不过 keyof
取 interface
的键。
const persion = {
age: 3,
text: 'hello world'
}
// type keys = "age" | "text"
type keys = keyof Point;
写一个方法获取对象里面的属性值时,一般人可能会这么写
function get1(o: object, name: string) {
return o[name];
}
const age1 = get1(persion, 'age');
const text1 = get1(persion, 'text');
但是会提示报错
因为 object 里面没有事先声明的 key。
当然如果把 o: object
修改为 o: any
就不会报错了,但是获取到的值就没有类型了,也变成 any 了。
这时可以使用 keyof
来加强 get
函数的类型功能,有兴趣的同学可以看看 _.get
的 type
标记以及实现
function get<T extends object, K extends keyof T>(o: T, name: K): T[K] {
return o[name]
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭