ts中keyof的使用

  |  

映射类型

映射类型允许您通过映射属性类型从现有类型创建新类型。现有类型的每个属性都根据您指定的规则进行转换。然后,转换后的属性构成了新类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}

const person: Person = {
age: 21,
name: "Tobias",
};

// name is a property of person
// --> no error
const name = getProperty(person, "name");

// gender is not a property of person
// --> error
const gender = getProperty(person, "gender");
1
2
3
4
5
6
7
8
9
type Optional<T> = {
[K in keyof T]?: T[K]
};

const person: Optional<Person> = {
name: "Tobias"
// notice how I do not have to specify an age,
// since age is now of type 'number?' and is therefor optional
};

映射类型

文章目录
  1. 1. 映射类型