Skip to content
On this page

TypeScript readonly

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

TypeScript 提供了 readonly 修改器,允许你标记一个类的属性为不可变的。只有在以下两个地方之一才能对只读属性进行赋值:

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

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

ts
class Person {
    readonly birthDate: Date;

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

在这个例子中,birthDate 属性是一个只读属性,在 Person 类的构造函数中被初始化。

下面的尝试重新分配 birthDate 属性会导致错误:

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

像其他访问修饰符一样,你可以像这样把 readonly 的声明和初始化合并到构造函数中:

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

Readonly vs. const

下面显示了 readonly 和 const 之间的区别:

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

总结

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