Javascript ES6-是否有一种优雅的方法可以导入所有命名的导出,而不是默认的导出?

Javascript ES6-是否有一种优雅的方法可以导入所有命名的导出,而不是默认的导出?,javascript,ecmascript-6,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

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

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

// 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 
在另一个文件中,我希望有一种优雅的方式,只导入所有命名的导出,而不必导入默认值:

// anotherFile.js
// this is what I would like to do, but syntax is not supported, right?
import { * as namedOnly } from './myModule'
// anotherFile.js
import omit from 'object.omit'
import * as all from './myModule'
const namedOnly = omit(all, 'default')
我确实不想:

// anotherFile.js
import myDefault, * as namedOnly from './myModule' 
因为我不需要在
anotherFile.js
中使用默认值,而且我的linting工具让我感到困扰 已定义但未使用的
myDefault
。我也不想:

// anotherFile.js
import {
  named1,
  named2,
  ... // many more
} from './myModule'
因为打字太多了。我也不想要对象。省略默认值:

// anotherFile.js
// this is what I would like to do, but syntax is not supported, right?
import { * as namedOnly } from './myModule'
// anotherFile.js
import omit from 'object.omit'
import * as all from './myModule'
const namedOnly = omit(all, 'default')

谢谢你的帮助

在“命名”和“默认”导出之间没有分隔。默认的导出是一个命名的导出,它恰好有一个名称
default
,这是一个特殊的大小写,便于某些语法使用

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

import * as foo from "foo";
这将包括指定的导出
default
(如果有)。如果您希望将其从检查中排除,则取决于您是否在自己的逻辑中处理它,就像您在
omit()
示例中所做的那样。

好,所以我使用lodash!

import*作为“./Modules.DATA.store”中的MDATA;
{defaultModuleData:{.map({.omit(MDATA,['default']),(ModClass)=>new ModClass())}

我不是大球迷,也不是性能友好,但没有选择

我不相信有较短的语法。ES规范中没有当前语法允许这种情况。好的,谢谢!我想我可能不知怎么错过了。。。但如果能有就好了,对吧?!从“/myModule”导入*作为myModule,您最关心的是什么与myModule.named1类似?从技术上讲,
myModule.default
存在,但您不必使用它。问题的一部分是默认导出是命名导出,它只是命名为
default
@loganfsmyth。我的“担心”是我想循环所有命名导出,而不必删除/忽略
默认值
…如何将foo转换为对象?显然它属于
Module
@tonix类型,您可以复制它的所有属性。这实际上取决于为什么它是模块对象而不是普通对象很重要。