我可以从导入的 object 定义 ES6 静态方法吗?

Can I define an ES6 static method from an imported object?

如果我定义一些class:

class MyClass {
  static  myVar = { someKey: someVal };
...
}

但我不想从 class 中定义静态变量,而是想从另一个文件导入它:

// utils.js
export const someObject = { someKey: someVal };
...

这行得通吗?:

import { someObject } from './utils.js';

class MyClass {
  static  myVar = someObject;
...
}

编辑: 这个问题的标题更准确地说是:"Can I define an ES6 static field from an imported object?" 静态字段目前是 JS 的第 2 阶段提案。请参阅下面@T.J.Crowder 的回答。并需要 "babel-preset-stage-2" 转译器。

这不是静态方法,它是静态 field(这还不是标准;static fields 目前处于第 2 阶段,尽管转译作为基础知识的语法似乎不太可能改变)。

但是如果静态字段 标准化时的语义是它们当前所处的状态(如果不是,那将很奇怪),是的,您可以这样做。字段的初始值设定项可以是任何表达式,包括使用导入绑定的表达式。


如果你想现在就做,不转译或等待静态字段成为标准,只需在之后做赋值:

import { someObject } from './utils.js';

class MyClass {
  // ...
}
MyClass.myVar = someObject;