如何在TypeScript中实现类常量?


在本教程中,我们将学习如何在TypeScript中实现类常量。

任何应用程序都有一些共享值,需要被类和模块使用。这些值可能是配置参数、环境设置、错误代码或状态指示。建议使用常量来保存这些值,而不是硬编码魔术字符串。使用常量可以使程序更易于管理,避免在不同位置重复使用相同的值。

面向对象的JavaScript是TypeScript的基础。TypeScript支持类、接口和其他面向对象编程的概念。在OOP中,类是构建对象的模板。对象的数 据包含在类中。TypeScript的内置特性支持类概念。JavaScript ES5及之前的版本不支持类。ES6为TypeScript提供了此功能。

常量是不可变的值,一旦赋值就不能更改。它们在成员变量中声明,类似于任何编程语言的类声明。

但是TypeScript不支持类级别的常量。“const”不能用于类成员。在TypeScript类声明中,有多种方法可以声明成员常量。它们是:

  • 使用`readonly`关键字
  • 使用静态`readonly`属性常量

首先,我们将学习如何在TypeScript中创建类。

使用类的实例创建类

在这里,我们将使用类的实例来创建一个类。我们将创建一个类,然后通过创建类的实例(或对象)并调用任何特定数据来使用其中的数据。

语法

用户可以按照以下语法在TypeScript中创建类:

//Declaring a class
class ClassName {
   // Statement of codes
}

如上语法所示,我们通过定义类名来创建类。

示例

在下面的示例中,我们可以看到我们创建了一个名为“Person”的类。它有一个名为PersonName的变量,其值为类型为字符串的“TutorialsPoint”。然后我们创建了一个person对象,将其存储在实例变量中,并使用console.log打印PersonName变量的值。

class Person {
   PersonName: string = "TutorialsPoint"
}
let instance = new Person();
console.log(instance.PersonName);

编译后,它将生成以下JavaScript代码:

var Person = /** @class */ (function () {
   function Person() {
      this.PersonName = "TutorialsPoint";
   }
   return Person;
}());
var instance = new Person();
console.log(instance.PersonName);

输出

以上代码将产生以下输出:

TutorialsPoint

在输出中,用户可以看到它显示了PersonName变量的值,我们使用实例来调用它。

使用`readonly`关键字

此方法将使用前面显示的相同语法创建类。在这里,我们将使用`readonly`关键字,这将帮助我们使该特定字段的值不可更改。同样,如果我们尝试修改该值,用户浏览器控制台将显示错误响应。

示例

在下面的示例中,我们可以看到我们创建了一个名为'Person'的类。它有两个字段:name和roll,都使用了`readonly`修饰符。这意味着我们不能在构造函数外部更新或修改这些字段的值。它将显示错误。之后,我们创建了一个名为displayResult()的函数,使用console.log显示这些字段的值。此函数由Person类的实例调用。

class Person{
   readonly name : string = "XYZ";
   readonly roll : number = 20;
   displayResult() : void{
      console.log(this.name);
      console.log(this.roll);
   }
}
  
let instance = new Person();
instance.displayResult();

编译后,它将生成以下JavaScript代码:

var Person = /** @class */ (function () {
   function Person() {
      this.name = "XYZ";
      this.roll = 20;
   }
   Person.prototype.displayResult = function () {
      console.log(this.name);
      console.log(this.roll);
   };
   return Person;
}());
var instance = new Person();
instance.displayResult();

输出

以上代码将产生以下输出:

XYZ
20

在上面的输出中,用户可以看到控制台显示了Person类中两个字段name和roll的值。

使用静态`readonly`属性常量

在此方法中,除了`readonly`关键字之外,我们还将使用`static`关键字,这允许我们直接实例化常量属性,而无需首先构造特定的实例。

换句话说,此类属性将保持不变,并且不能赋值给类构造函数。为了更简单,我们还将在此处声明静态函数,该函数将在浏览器控制台中显示我们的结果,并且不会调用实例化。

示例

在下面的示例中,我们可以看到我们创建了一个名为‘Person’的类。它有一个名为PersonName的字段。它带有`readonly`关键字和`static`关键字。这意味着我们不能在构造函数内部和外部更新或修改这些字段的值。它将显示错误。之后,我们创建了一个名为displayName()的函数,我们使用console.log显示字段值。此函数由Person类调用。

class Person {
   static readonly PersonName : string = "TutorialsPoint";
   static Displayname() : void {

      console.log(Person.PersonName);
   }
}
Person.Displayname();

编译后,它将生成以下JavaScript代码:

var Person = /** @class */ (function () {
   function Person() {
   }
   Person.Displayname = function () {
      console.log(Person.PersonName);
   };
   Person.PersonName = "TutorialsPoint";
   return Person;
}());
Person.Displayname();

输出

以上代码将产生以下输出:

TutorialsPoint

在上面的输出中,用户可以看到控制台显示了Person类中PersonName字段的值。

更新于:2022年12月19日

1K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告