如何实现类常量?

19 浏览
0 Comments

如何实现类常量?

在TypeScript中,const关键字不能用于声明类属性。这样做会导致编译器出现错误提示:“类成员不能有\'const\'关键字”。我发现我需要在代码中清楚地指示某个属性不能被更改。我希望IDE或编译器在我尝试给属性赋新值时出现错误提示。你们是怎么实现的呢?我目前正在使用只读属性,但我想知道是否有更好的方法:

get MY_CONSTANT():number {return 10};

我现在使用的是TypeScript 1.8。有什么建议吗?

PS:我现在使用的是TypeScript 2.0.3,因此我接受了David的答案

admin 更改状态以发布 2023年5月21日
0
0 Comments

常量可以在类外部声明并在您的类中使用。否则,get属性是一个不错的解决方法。\n

const MY_CONSTANT: string = "wazzup";
export class MyClass {
    public myFunction() {
        alert(MY_CONSTANT);
    }
}

0
0 Comments

TypeScript 2.0新增了readonly修饰符:

class MyClass {
    readonly myReadOnlyProperty = 1;
    myMethod() {
        console.log(this.myReadOnlyProperty);
        this.myReadOnlyProperty = 5; // error, readonly
    }
}
new MyClass().myReadOnlyProperty = 5; // error, readonly

它不完全是一个常量,因为它允许在构造函数中进行赋值,但这可能不是一个大问题。

替代解决方案

另一种选择是使用readonlystatic关键字:

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

这样做的好处是不允许在构造函数中进行赋值,并且只存在于一个地方。

0