TypeScript编译器产生错误的输出

时间:2016-01-23 19:11:10

标签: typescript

TypeScript编译器似乎产生错误的输出,如下所示:

export default class TitleParser {}

产地:

class TitleParser {
}
exports.TitleParser = TitleParser;

所以这里的问题是我在尝试通过导入它时使用该类时出错。在导入库后尝试实例化时显示错误:titleparser_1.default is not a function

import TitleParser from './TitleParser';
const parser = new TitleParser(); // the error occurs here

对此的修复是导出下面的类,如下所示:

class TitleParser {}
export default TitleParser;

以上将生成正确的JavaScript代码,即

class TitleParser {}
exports.default = TitleParser;

之后使用该类不会再出现错误。

我的编译器配置如下:

    "module": "commonjs",
    "target": "es6",
    "noImplicitAny": true,
    "outDir": "../api",
    "rootDir": "src",
    "sourceMap": true,
    "experimentalDecorators": true

编译器版本:1.7.5

这是编译器中的错误还是我做错了什么?编译器从不抱怨。

1 个答案:

答案 0 :(得分:1)

在使用commonjs时,你不应该能够以ES6为目标(编译器通常会对此发出警告......请参阅下一段,了解为什么会这样做。)

如果您将配置直接从文件中复制出来,那么在行尾也会丢失逗号:

"sourceMap": true

如果您定位ES5并修复配置(Visual Studio Code非常适合指出问题),输出将为:

var TitleParser = (function () {
    function TitleParser() {
    }
    return TitleParser;
})();
exports.default = TitleParser;
//# sourceMappingURL=titleparser.js.map

您可以完全按照预期使用:

import TitleParser from './titleparser'

var x = new TitleParser();

全部用v1.7.5进行测试

ES6

如果您想使用ES6,请按以下方式调整代码:

export class TitleParser {

}

import {TitleParser} from './titleparser'

var x = new TitleParser();
相关问题