不可变类型

作者:xie392地址:https://v.douyin.com/ieQtm3cC/更新时间:2024-12-21

案例代码

1
type DeepReadonly<T extends Record<string|symbol, any>> = {
2
readonly [K in keyof T]: DeepReadonly<T[K]> // 深度克隆
3
}
4
5
interface Person {
6
name: string
7
age: number
8
obj: {
9
a: number
10
}
11
}
12
13
const person: DeepReadonly<Person> = {
14
name: 'xie',
15
age: 18,
16
obj: {
17
a: 1
18
}
19
}
20
21
// person.obj.a = 2 // error: 无法为“a”赋值,因为它是只读属性。