在 TypeScript 中,const
关键字不能用于声明类属性。这样做会导致编译器出现“类成员不能具有‘const’关键字”的错误。
我发现自己需要在代码中明确指出不应更改某个属性。如果我在属性声明后尝试为其分配新值,我希望 IDE 或编译器出错。你们是如何做到这一点的?
我目前使用的是只读属性,但我想知道是否有更好的方法:
get MY_CONSTANT():number {return 10};
我正在使用 typescript 1.8。有什么建议吗?
PS:我现在使用的是 typescript 2.0.3,所以我接受了 David's answer
最佳答案
TypeScript 2.0 有 readonly
modifier :
class MyClass {
readonly myReadOnlyProperty = 1;
myMethod() {
console.log(this.myReadOnlyProperty);
this.myReadOnlyProperty = 5; // error, readonly
}
}
new MyClass().myReadOnlyProperty = 5; // error, readonly
它不完全是常量,因为它允许在构造函数中赋值,但这很可能没什么大不了的。
替代解决方案
另一种方法是使用 static
关键字和 readonly
:
class MyClass {
static readonly myReadOnlyProperty = 1;
constructor() {
MyClass.myReadOnlyProperty = 5; // error, readonly
}
myMethod() {
console.log(MyClass.myReadOnlyProperty);
MyClass.myReadOnlyProperty = 5; // error, readonly
}
}
MyClass.myReadOnlyProperty = 5; // error, readonly
这样做的好处是不能在构造函数中赋值,只能存在于一个地方。
关于typescript - 如何实现类常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265275/