跳到主要内容

TypeScript readonly

摘要:在本教程中,你将学习如何使用 TypeScript readonly 访问修饰符将类属性标记为不可变属性。

TypeScript 提供了 readonly 修饰符,允许将类的属性标记为不可变。 对只读属性的赋值只能发生在以下两个位置之一:

  • 在属性声明时。
  • 在同一个类的构造函数中。

要将属性标记为不可变,可以使用 readonly 关键字。 下面展示了如何在 Person 类中声明只读属性:

class Person {
readonly birthDate: Date;

constructor(birthDate: Date) {
this.birthDate = birthDate;
}
}

在此示例中,birthdate 属性是只读属性,在 Person 类的构造函数中初始化。

以下尝试重新为 birthDate 属性赋值时会触发报错:

let person = new Person(new Date(1990, 12, 25));
person.birthDate = new Date(1991, 12, 25); // Compile error

与其他访问修饰符一样,你可以在构造函数中合并只读属性的声明和初始化,如下所示:

class Person {
constructor(readonly birthDate: Date) {
this.birthDate = birthDate;
}
}

Readonly vs. const

readonly 和 const 的区别如下:

readonlyconst
用于类的属性变量
初始化在同一个类的声明或构造函数中在声明时

概括

  • 使用 readonly 访问修饰符将类属性标记为不可变。
  • 只读属性必须作为声明的一部分或在同一类的构造函数中进行初始化。