2017-05-30 65 views
2

我正在寻找一种优雅的方式来导入所有命名的导出,而无需导入默认。ES6 - 是否有一种优雅的方式来导入所有命名的导出,但不是默认导出?

在一个文件我出口许多命名常量加一个默认:

// 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 myDefault, * as namedOnly from './myModule' 

因为我不需要默认anotherFile.js和我的短毛绒工具bug我约 定义但未使用myDefault。我也不想:

// anotherFile.js 
import { 
    named1, 
    named2, 
    ... // many more 
} from './myModule' 

因为这是太多的打字。我也做不object.omit默认:

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

感谢您的帮助!

+0

我不认为这有一个简短的语法。 –

+0

ES规范中没有允许的当前语法。 – varbrad

+0

好的,谢谢!我想我可能会错过它......但会很高兴有,对吧?! – mcmunder

回答

6

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

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

import * as foo from "foo"; 

,并且将包括名为export default(如果有)。如果您希望将其从支票中排除,那么您应该按照自己的逻辑来处理该问题,就像您对omit()示例所做的那样。

相关问题