Typecript中的类属性常量
Constants 是固定的值,一旦分配了值就不能再修改。这些可以像java等编程语言中的成员变量一样在类中声明。
但是typescript不允许类的常量。
如果类中声明了常量的成员变量,会发生什么?
class Employee {
const defaultValue = 10;
calculate() {
console.log(this.defaultValue);
}
}
在上面的类中,有一行常量声明会产生编译错误 ,一个类的成员不能有'const'。
我们有很多方法可以实现在typecript类声明中声明成员常量:
- readonly关键字
- 带有只读属性的静态
只读属性的常量
关键字readonly ,在typecript语言中加入了2.0 版本。
重要提示
readonly属性一旦被赋值就不会被修改。- 一种方法是在
readonly属性中声明并赋值。 - 另一种方法是在类中声明只读属性,只在构造函数中赋值。
- 在构造函数之外分配
readonly属性是不允许的。
同样的类可以用readonly属性关键字来重写
readonly 当属性被声明时,属性会被赋值,如下所示
class Employee {
readonly defaultValue = 10;
calculate() {
console.log(this.defaultValue);
this.defaultValue=40 // gives compilation error
console.log(this.defaultValue);
}
}
readonly 属性使得属性被初始化并作为常量使用。
如果你试图分配新的值,即this.defaultValue=40,它会抛出错误不能分配给'defaultValue',因为它是一个只读的属性。
只读属性可以被声明,但不能被分配,在构造函数中初始化其值,如下所示
class Employee {
readonly defaultValue:number ;
constructor(value: number){
this.defaultValue=value;
}
calculate() {
console.log(this.defaultValue);
}
}
let emp=new Employee(123)
emp.calculate();
静态的只读属性常量
static 只允许在类的层面上声明和赋值。不允许在构造函数和其他地方赋值。
class Employee {
static readonly defaultValue:number ;
constructor(value: number){
Employee.defaultValue=value; // gives compilation error
}
calculate() {
console.log(Employee.defaultValue);
}
}
let emp=new Employee(123)
emp.calculate();
带有只读属性的静态与真正的常量的行为是一样的。
总结
在本教程中,你学会了如何在typescript类中声明类级常量。