如何在 TypeScript 的类中声明常量

在 TypeScript 的类中声明常量

How to declare constants in a Class in TypeScript

使用readonly修饰符在类中声明常量。当类字段以readonly修饰符为前缀时,您只能为类构造函数内部的属性赋值。在构造函数之外对属性进行赋值会导致错误。

索引.ts
class Person { readonly name = 'Alice'; readonly country = 'Austria'; logCountry() { console.log(this.country); } } const person = new Person(); person.logCountry(); // 👉️ "Austria" console.log(person.name); // 👉️ "Alice"

我们使用
只读修饰符
来防止在构造函数之外对类属性进行赋值。

使用这种方法时,我们仍然可以在构造函数中更改属性的值。

索引.ts
class Person { readonly name: string = 'Alice'; readonly country: string = 'Austria'; constructor() { this.name = 'Bob'; this.country = 'Belgium'; } logCountry() { console.log(this.country); } } const person = new Person(); person.logCountry(); // 👉️ "Belgium" console.log(person.name); // 👉️ "Bob"

如果你不想readonly在构造函数中改变属性的值,你可以使用
static
关键字
readonly

索引.ts
class Person { // 👇️ public if you need to access from outside the class public static readonly firstName = 'Alice'; // 👇️ private if you need to access only from inside this class private static readonly country = 'Austria'; // 👇️ protected if you need to access only from this class // and its subclasses protected static readonly age = 30; logProperties() { console.log(Person.firstName); console.log(Person.country); console.log(Person.age); } } console.log(Person.firstName); // 👉️ "Alice"
使用static关键字时,我们定义了静态方法或属性。静态方法和属性不能在类的实例上访问,它们只能在类本身上访问。

firstName属性被标记为
public,这意味着它可以在任何地方访问(类内和类外)。

public当您需要从类外部访问特定属性时,您应该使用。

私有
可见性只允许从类内部访问。

标记为
受保护
的成员仅对类本身及其子类可见。

确保您访问static的是类的属性和方法,例如
Person.firstName,而不是类的实例。

另一种方法是在类之外声明一个常量并在类中使用它。

索引.ts
const firstName = 'Alice'; class Person { logName() { console.log(firstName); } } const person = new Person(); person.logName(); // 👉️ "Alice"

您选择哪种方法是个人喜好的问题。我会选择使用
readonly修饰符,因为我认为这是最直接、最直观的方法。