概述
keyof
TypeScript
允许我们遍历某种类型的属性,并通过keyof
操作符提取其属性的名称。- 该操作符可以用于获取某种
类型
的所有键,其返回类型是联合类型
,简单的说,它是作用于类型的,返回类型为联合类型。
效果
- 将类型对应的对象中的属性解构出来,并作为联合类型返回。
- 直接作用
interface
类型时,interface
对应的为对象,keyof
将对象中的属性名都结构出来,并作为联合类型返回。
interface IPerson {
name: string,
age: number,
sex: 0 | 1
}
type P1 = keyof IPerson
interface ITest {
key: P1
}
let test:ITest = {
key: "name" // name | age | sex
}
- 作用于
数组时
将数组对应的属性全部作为联合类型返回。
interface IPerson {
name: string,
age: number,
sex: 0 | 1
}
type P1 = keyof IPerson[]
interface ITest {
key: P1
}
let test:ITest = {
key: "length" // length | concat | ...
}
- 作用于类时
作用于类时,效果类似于对象,它将类生成的对象属性,当联合类型返回。
class Person {
name: string
age: number
sex: 0 | 1
constructor(name: string, age: number, sex: 0 | 1) {
this.name = name
this.age = age
this.sex = sex
}
getName(): string {
return this.name
}
setName(name: string): void {
this.name = name
}
}
type K1 = keyof Person
interface ITest {
key: K1
}
let test: ITest = {
key: "age" // age | name | sex | setName | getName
}
示例
// 两个参数,第一个参数为对象,第二个参数为对象中的属性名,
// 将对象中对应的属性值返回
function getValue<T extends object, K extends keyof T>(obj: T, key: K) {
return obj[key]
}
最后
以上就是执着刺猬为你收集整理的typescript 之 keyof的全部内容,希望文章能够帮你解决typescript 之 keyof所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复