2016-01-11 3 views
8

У меня есть эти два заявления импорта в файле:Как импортировать два класса с одинаковым именем в javascript/es6?

import Data from 'component/Data.js'; 
import Data from 'actions/Data.js'; 

Оба файла содержит класс с именем Data.

Как я могу указать, что именно? Как я могу избежать столкновения имен?

+0

Вы можете выбрать на основе своего родительского класса как идентификатор –

+0

Можете ли вы предоставить пример кода в ответе? –

ответ

33

Предположительно component/Data и actions/Data оба имеют default экспорт, а не экспорт названий? Как это:

export default class Data {} 

Если это так, то импортер может вызвать переменные, что им нравится:

import Data1 from 'component/Data.js'; 
import Data2 from 'actions/Data.js'; 

Если они названы экспорта:

export class Data {} 

Тогда вам необходимо использовать фигурные скобки вместе с as для указания названия источника и целевого назначения:

import { Data as Data1 } from 'component/Data.js'; 
import { Data as Data2 } from 'actions/Data.js'; 
+0

именно в том, что я искал, я попробовал« import {Data) как Data2 из «actions/Data.js»; 'который не работал и пришел сюда и реализовал виноват. – DarkMukke

1

Редакцией: Согласно RGraham ответ, обновляя мой ответ:

Не можете вы импортировать его, как это:

import {Data as D1} from 'component/Data.js'; 
import {Data as D2} from 'actions/Data.js'; 

затем использовать его как вам требуется:

D1.{} 
D2.{} 

ссылки от: https://github.com/lukehoban/es6features/blob/master/README.md/#user-content-modules

+0

Ключевое слово 'as' выбрасывает исключение« Неожиданный токен » –

Смежные вопросы