如何在javascript / es6中导入两个同名的类?

时间:2016-01-11 05:48:41

标签: ecmascript-6

我在文件中有这两个import语句:

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

这两个文件都包含一个名为Data的类。

我如何指定哪个是哪个?我怎样才能避免姓名冲突?

2 个答案:

答案 0 :(得分:81)

大概component/Dataactions/Data都有默认出口而不是名为出口?像这样:

export default class Data {}

如果是这种情况,则导入器可以随意调用变量:

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

如果它们被命名为exports:

export class Data {}

然后,您需要使用大括号和as来指定源名称和目标名称:

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

答案 1 :(得分:4)

编辑:根据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