-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
keyof
可以把 keyof
简单的理解为相遍历,把遍历的结果作为联合类型返回。
用官网的例子讲解,首先定义一个 Person
接口
interface Person {
name: string;
age: number;
location: string;
}
-
遍历
Person
接口的属性,将得到的值是name
,age
,location
的联合类型type K1 = keyof Person; // "name" | "age" | "location"
-
Person[]
是个数组,遍历的是数组的属性,得到的就是数组属性的联合类型type K2 = keyof Person[]; // "length" | "push" | "pop" | "concat" | ...
-
就是一个对象,对象的
key
是string
类型,所以得到string
,但为什么是string
和number
的联合类型,还不太清楚。如果把
string
换成了number
,那么得到的结果是nubmer
type K3 = keyof { [x: string]: Person }; // string | number type K4 = keyof { [x: number]: Person }; // number
类型访问
-
类型也可以通过访问的形式得到,
Person["name"]
因为name
是string
所以得到string
type P1 = Person["name"]; // string
-
name
是string
,age
是number
,得到string
和number
的联合类型type P2 = Person["name" | "age"]; // string | number
-
string
的charAt
是函数,得到charAt
函数类型type P3 = string["charAt"]; // (pos: number) => string
-
string
的push
是函数,得到push
函数类型type P4 = string[]["push"]; // (...items: string[]) => number
-
访问数组的第一项,类型是
string
type P5 = string[][0]; // string
Metadata
Metadata
Assignees
Labels
No labels