Readonly

源码:

1
2
3
4
// 将T中的所有属性设为只读
type Readonly<T> = {
readonly [P in keyof T]: T[P]
}

类型使用Readonly转换后,属性全部变为只读

Record

源码:

1
2
3
4
5
// K是键的类型,即string|number|symbol
// 同时约束键和值的类型
type Record<K extends keyof any, T> = {
[P in K]: T
}

Person通过key记录后,规定了一个整齐的数据结构