我正在制作一个 Javascript 类,我希望有一个像 Java 中那样的公共静态字段。这是相关代码:
export default class Agent {
CIRCLE: 1,
SQUARE: 2,
...
这是我得到的错误:
line 2, col 11, Class properties must be methods. Expected '(' but instead saw ':'.
看起来 ES6 模块不允许这样做。有没有办法获得所需的行为,还是我必须写一个吸气剂?
原文由 aebabis 发布,翻译遵循 CC BY-SA 4.0 许可协议
您使用访问器和“静态”关键字制作“公共静态字段”:
查看规范 14.5 — 类定义 — 您会看到一些可疑的相关内容 :)
因此,您可以从那里转到 14.5.14 — 运行时语义:ClassDefinitionEvaluation — 仔细检查它是否真的像它看起来那样做。具体来说,第20步:
IsStatic 是在 14.5.9 之前定义的
所以
PropertyMethodDefinition
以“F”(构造函数,函数对象)作为参数调用,它又 在该对象上创建一个访问器方法。这至少在 IETP(技术预览)以及 6to5 和 Traceur 编译器中 已经有效。