ES6 - 是否有一种优雅的方式来导入所有命名导出而不是默认导出?

mcm*_*der 12 javascript ecmascript-6

我正在寻找一种优雅的方式来导入所有命名的导出,而不必导入默认值.

在一个文件中,我输出了许多命名常量和一个默认值:

// myModule.js
const myDefault = 'my default' 
export const named1 = 'named1' 
export const named2 = 'named2'
// many more named exports - otherwise this would not be an issue...
export default myDefault 
Run Code Online (Sandbox Code Playgroud)

在另一个文件我想有一个优雅的方式来导入所有命名的出口,而无需导入默认:

// anotherFile.js
// this is what I would like to do, but syntax is not supported, right?
import { * as namedOnly } from './myModule'
Run Code Online (Sandbox Code Playgroud)

希望:

// anotherFile.js
import myDefault, * as namedOnly from './myModule' 
Run Code Online (Sandbox Code Playgroud)

因为我不需要默认输入anotherFile.js,我的linting工具会让我对定义但未使用的内容感到不满myDefault.我也不想:

// anotherFile.js
import {
  named1,
  named2,
  ... // many more
} from './myModule'
Run Code Online (Sandbox Code Playgroud)

因为打字太多了.我还没有object.omit默认:

// anotherFile.js
import omit from 'object.omit'
import * as all from './myModule'
const namedOnly = omit(all, 'default')
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

log*_*yth 26

"命名"和"默认"导出之间没有分离.默认导出是一个命名导出,它恰好具有default特殊的名称,以便于某些语法的使用.

导入所有导出密钥的唯一方法是使用

import * as foo from "foo";
Run Code Online (Sandbox Code Playgroud)

default如果有的话,那将包括命名导出.如果您希望将它从支票中排除,那么您可以按照自己的逻辑处理它,就像您对omit()示例所做的那样.