迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > TypeScript >

如何在 TypeScript 的类中声明常量

作者:迹忆客 最近更新:2022/12/06 浏览次数:

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

class Person {
  readonly name = 'Jiyik';
  readonly country = 'China';

  logCountry() {
    console.log(this.country);
  }
}

const person = new Person();

person.logCountry(); // 👉️ "China"

console.log(person.name); // 👉️ "Jiyik"

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

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

class Person {
  readonly name: string = 'Jiyik';
  readonly country: string = 'China';

  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 一起使用。

class Person {
  // 👇️ public 如果需要从类外访问
  public static readonly firstName = 'Jiyik';

  // 👇️ 如果只需要从此类内部访问,则为private
  private static readonly country = 'China';

  // 👇️ 如果只需要从此类及其子类访问,则为 protected
  protected static readonly age = 30;

  logProperties() {
    console.log(Person.firstName);
    console.log(Person.country);
    console.log(Person.age);
  }
}

console.log(Person.firstName); // 👉️ "Jiyik"

使用 static 关键字时,我们定义了静态方法或属性。 静态方法和属性不能在类的实例上访问,它们只能在类本身上访问。

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

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

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

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

确保我们正在访问类的静态属性和方法,例如 Person.firstName,而不是类的实例。

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

const firstName = 'Jiyik';

class Person {
  logName() {
    console.log(firstName);
  }
}

const person = new Person();

person.logName(); // 👉️ "Jiyik"

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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Go 中声明常量 Map

发布时间:2023/04/27 浏览次数:126 分类:Go

Map 是可以按任何顺序排序的键值对的集合。 它为键分配值。它是计算机科学中常见的数据结构。 在本文中,我们将介绍在 Go 中声明常量映射。

在 TypeScript 中返回一个 Promise

发布时间:2023/03/19 浏览次数:182 分类:TypeScript

本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便