在 TypeScript 中,
Readonly<T>是一个内置的工具类型(Utility Type),用于将类型T中的所有属性设置为只读属性。
type Person = {
name: string;
age: number;
};
// 创建
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
type ReadonlyPerson = Readonly<Person>;
// 效果
type ReadonlyPerson = {
readonly name: string;
readonly age: number;
};
如上示例:
[P in keyof T]: 这部分使用了映射类型语法,它遍历类型T的所有属性,并将每个属性的键(key)存储在P中。这样,我们可以逐个访问T的属性。readonly [P in keyof T]: T[P]: 这部分表示将属性设置为只读。通过readonly关键字,我们确保属性值在赋值后不能被修改。
通过将属性类型保持不变,但将其设置为只读,Readonly<T> 工具类型将类型 T 中的所有属性转换为只读属性。
Readonly<T>在TypeScript中,可以帮助确保对象的属性在使用过程中不被意外修改。