节点ES6导入和打字稿ES6导入不一样

时间:2016-02-14 21:16:20

标签: node.js typescript ecmascript-6 atom-editor

使用atom-typescriptts-node我可以直接运行打字稿源而无需先编译它。但是,当我编译它并尝试从源中导入相同的文件时,它们会以不同的格式显示。

这是我的index.ts文件:

import {_for} from './for';
import {_forEach} from './forEach';
import {_while} from './while';

export let PromiseChain = {
  for:      _for,
  forEach:  _forEach,
  while:    _while
}

编译为:

"use strict";
var for_1 = require('./for');
var forEach_1 = require('./forEach');
var while_1 = require('./while');
exports.PromiseChain = {
    for: for_1._for,
    forEach: forEach_1._forEach,
    while: while_1._while
};
//# sourceMappingURL=index.js.map

从我的测试文件中,我尝试首先从../dist/index导入PromiseChain对象,然后从./index导入相同的对象。它看起来像这样 -

import * as PromiseChainDist from '../dist/index';
import * as PromiseChainSrc from './index';

问题是。 Dist包含导出的成员forforEachwhile。而Src包含PromiseChain

这可以在以下屏幕截图中看到 -

enter image description here

enter image description here

我应该期望它们的行为相同吗?我应该让他们表现得一样吗?我希望能够用dist -

做到这一点
/// ES5
var PromiseChain = require('promise-chain');
PromiseChain.for(...);

/// ES6
import {PromiseChain} from 'promise-chain';
PromiseChain.for(...);

为什么我可以使用src而不是dist?

修改

情节变浓。只是测试dist导入。它看起来像这样 -

enter image description here

但这说PromiseChain.for不是一个功能。记录PromiseChain后得到这个! -

{ PromiseChain: 
   { for: [Function: _for],
     forEach: [Function: _forEach],
     while: [Function: _while] } }

这意味着它应该看起来像这样 - PromiseChain.PromiseChain.for这是不可取的。但是,我仍然无法直接导入PromiseChain。

enter image description here

这绝对好像是一个错误。

修改编辑:

如果我这样构造它 -

export = {
  for: _for,
  forEach: _forEach,
  while: _while
}

import * as PromiseChain from ...确实有效。我仍然希望import {PromiseChain}能够......

0 个答案:

没有答案