2017-05-30 109 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()示例所做的那樣。

相關問題