如何在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字段的值。