我想在我的程序中使用const
关键字。
export class Constant {
let result : string;
private const CONSTANT = 'constant'; //Error: A class member cannot have the const keyword.
constructor () {}
public doSomething () {
if (condition is true) {
//do the needful
}
else
{
this.result = this.CONSTANT; // NO ERROR
}
}
}
问题1 :为什么类成员在打字稿中没有const关键字?
问题2 :当我使用
时static readonly CONSTANT = 'constant';
并在
中分配this.result = this.CONSTANT;
显示错误。为什么呢?
我已关注此帖How to implement class constants in typescript?,但没有得到答案为什么typescript会使用const
关键字显示此类错误。
答案 0 :(得分:14)
问题1:为什么类成员在typescript中没有const关键字?
按设计。除了其他原因,因为EcmaScript6 doesn't either。
此问题在此特别回答:'const' keyword in TypeScript
<强>问题2:强> 当我使用
中指定
static readonly CONSTANT = 'constant';
并在
this.result = this.CONSTANT;
显示错误。为什么呢?
如果您使用static
,则无法使用this
引用您的变量,但使用该类的名称!
export class Constant{
let result : string;
static readonly CONSTANT = 'constant';
constructor(){}
public doSomething(){
if( condition is true){
//do the needful
}
else
{
this.result = Constant.CONSTANT;
}
}
}
为什么?因为this
指的是字段/方法所属的类的实例。对于静态变量/方法,它不属于任何实例,而是属于类本身(快速简化)