TS进阶用法Record & Readonly
Readonly
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
- keyof 是干什么的?
keyof我们讲过很多遍了 将一个接口对象的全部属性取出来变成联合类型
- in 是干什么的?
in 我们可以理解成for in P 就是key 遍历 keyof T 就是联合类型的每一项
- Readonly 是将该属性变为只读
Readonly 这个操作就是将每一个属性变成只读
- T[P] 是干什么的?
T[P] 索引访问操作符,与 JavaScript 种访问属性值的操作类似
Record
type Record<K extends keyof any, T> = {
[P in K]: T;
};
keyof any 返回 string number symbol 的联合类型
in 我们可以理解成for in P 就是key 遍历 keyof any 就是string number symbol类型的每一项
extends来约束我们的类型
T 直接返回类型
做到了约束 对象的key 同时约束了 value