如何导入类的静态成员?

Kev*_*Bot 4 javascript ecmascript-6 babeljs

我正在尝试仅使用标准导入语法将类的静态成员导入到文件中。给出上下文:

解构作用于类的静态方法:

class Person {
    static walk() {
        console.log('Walking');
    }
}

let {walk} = Person;
console.log(walk); // walk function
Run Code Online (Sandbox Code Playgroud)

然而,我认为导入的行为就像解构赋值。如果这是真的,那么我希望以下内容能够发挥作用。但是,当我尝试导入 walk 方法时,它只是返回为undefined

通过导入解构,为什么不起作用?


person.js

export default class Person {
    static walk() {
        console.log('Walking');
    }
}
Run Code Online (Sandbox Code Playgroud)

walker.js

import {walk} from './person';
console.log(walk); // undefined
Run Code Online (Sandbox Code Playgroud)

由于这似乎不起作用,如何将静态方法从类导入到另一个模块?

dri*_*hev 6

export default可以与 ES6 中的正常导出混合。例如 :

// module-a.js
export default a = 1;
export const b = 2;

// module-b.js
import a, { b } from "./module-a";
a === 1;
b === 2;
Run Code Online (Sandbox Code Playgroud)

这意味着导入括号与析构函数赋值不同。

你想要实现的目标实际上在 ES6 规范中是不可能实现的。最好的方法是在导入后使用解构

import Person from "./person";
const { walk } = Person;
Run Code Online (Sandbox Code Playgroud)