如果我定义了一些类:
class MyClass {
static myVar = { someKey: someVal };
...
}
但是我没有在类中定义静态变量,而是想从另一个文件中导入它:
// utils.js
export const someObject = { someKey: someVal };
...
这会有效吗?:
import { someObject } from './utils.js';
class MyClass {
static myVar = someObject;
...
}
编辑:此问题的标题更准确地是:"我可以从导入的对象定义ES6静态字段吗?"静态字段目前是JS的第二阶段提案。请参阅下面的@ T.J.Crowder的答案。并要求" babel-preset-stage-2" transpiler。
答案 0 :(得分:3)
这不是一个静态方法,它是一个静态字段(它还不是标准的; static fields目前处于第2阶段,尽管将语法转换为基础知识似乎不太可能改变。)
但是,当静态字段 标准化时,语义就像它们目前所处的那样(如果它们不是那样会很奇怪),是的,你可以这样做。字段的初始值设定项可以是任何表达式,包括使用导入绑定的表达式。
如果您想立即执行此操作,无需转换或等待静态字段成为标准,请稍后执行分配:
import { someObject } from './utils.js';
class MyClass {
// ...
}
MyClass.myVar = someObject;