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:组合修饰符=>与访问修饰符协同控制权限