TypeScript 类的 readonly 修饰符
文章类型:TypeScript
发布者:hp
发布时间:2025-03-16
1:定义:readonly 修饰符用于将类的属性标记为只读,强制属性在初始化后不可被修改,从而保障数据的不可变性和安全性
2:作用:防止意外修改和明确设计意图
1:初始化与赋值:
声明时必须直接初始化,或在构造函数中赋值(未初始化会报错)
子类构造函数中无法修改父类的readonly属性
class User {
readonly id: string;
constructor(id: string) {
this.id = id; // 允许在构造函数中赋值
}
}
2:作用范围:
仅能修饰类的属性,不可用于方法
支持与接口、对象类型结合使用
3:类型推断:
若未显示指定类型直接初始化,属性会被推断未字面量类型
1:常量属性
class Config {
readonly API_KEY: string = "abc123";
}
2:依赖注入或初始化配置
class Database {
readonly connection: Connection;
constructor(config: Config) {
this.connection = new Connection(config);
}
}
3:不可变数据模型
class ImmutablePoint {
constructor(
public readonly x: number,
public readonly y: number
) {}
}
4:与其他修饰符配合
class SecureData {
public readonly secret: string;
private readonly _internalKey: string;
}
1:readonly与const的区别:
readonly=>用于类属性和对象类型,支持在构造函数中初始化,作用域为类或者对象
const=>用于变量声明,作用域为块级,不可重新赋值
1:初始化阶段赋值=>声明时或构造函数中完成
2:不可变性保障=>防止运行时意外修改
3:类型安全=>避免隐式字面量类型陷阱
4:组合修饰符=>与访问修饰符协同控制权限