在TypeScript中,不能使用const关键字来声明类属性。这样做会导致编译器报错“类成员不能有'const'关键字”。
我发现自己需要在代码中明确指出不应该更改某个属性。我希望IDE或编译器在声明属性后,如果我试图将新值赋给属性时出错。你们是怎么做到的?
我目前正在使用只读属性,但我想知道是否有更好的方法:
get MY_CONSTANT():number {return 10};
我使用的是typescript 1.8。建议吗?
PS:我现在使用的是typescript 2.0.3,所以我接受了David的答案
对我来说,之前的答案都不管用。我确实需要将静态类转换为enum。
是这样的:
export enum MyConstants {
MyFirstConstant = 'MyFirstConstant',
MySecondConstant = 'MySecondConstant'
}
然后在我的组件中,我添加了其他答案中建议的新属性
export class MyComponent {
public MY_CONTANTS = MyConstans;
constructor() { }
}
然后在我的组件模板中,我这样使用它
<div [myDirective]="MY_CONTANTS.MyFirstConstant"> </div>
编辑:对不起。我的问题和OP的不同。如果别人有和我一样的问题,我还是会把它留在这里。
如果你想要封装常量,它不一定是一个类,它可以是一个命名空间,这里有不同的选项:
const MY_CONST_1 = "MyText"
这是最优的选项,并生成以下js:
const MY_CONST_1 = "MyText"
其他选项是封装在命名空间:
namespace Constants {
export const MY_CONST_1: string = 'MyText';
}
这将生成以下js:
var Constants;
(function (Constants) {
Constants.MY_CONST_1 = 'MyText';
})(Constants || (Constants = {}));
和类的其他选项:
abstract class ConstantsClass {
static readonly MY_CONST_1 = "MyText";
}
这将生成以下js:
class ConstantsClass {
}
ConstantsClass.MY_CONST_1 = "MyText";
你可以选择最适合你的。