3 回答

TA贡献1982条经验 获得超2个赞
您可以执行以下操作:
const从模块中导出a 。根据您的用例,您可以:
export const constant1 = 33;
并在必要时从模块导入该文件。或者,基于您的静态方法思想,您可以声明一个static get访问器:
const constant1 = 33,
constant2 = 2;
class Example {
static get constant1() {
return constant1;
}
static get constant2() {
return constant2;
}
}
这样,您将不需要括号:
const one = Example.constant1;
Babel REPL示例
然后,就像您说的那样,由于a class只是函数的语法糖,因此您可以仅添加一个不可写的属性,如下所示:
class Example {
}
Object.defineProperty(Example, 'constant1', {
value: 33,
writable : false,
enumerable : true,
configurable : false
});
Example.constant1; // 33
Example.constant1 = 15; // TypeError
如果我们可以做以下事情可能会很好:
class Example {
static const constant1 = 33;
}
但是不幸的是,此类属性语法仅在ES7提议中,即使这样,它也不允许添加const到属性中

TA贡献1821条经验 获得超5个赞
我正在使用babel以下语法,对我来说:
class MyClass {
static constant1 = 33;
static constant2 = {
case1: 1,
case2: 2,
};
// ...
}
MyClass.constant1 === 33
MyClass.constant2.case1 === 1
请考虑您需要预设"stage-0"。
要安装它:
npm install --save-dev babel-preset-stage-0
// in .babelrc
{
"presets": ["stage-0"]
}
更新:
目前使用 stage-3

TA贡献1775条经验 获得超11个赞
在此文件中声明:
没有(有意地)没有直接的声明方式来定义原型数据属性(方法以外的类)或实例属性
这意味着它是故意这样的。
也许您可以在构造函数中定义一个变量?
constructor(){
this.key = value
}
添加回答
举报