Typescript 类型脚本编译器产生错误的输出

Typescript 类型脚本编译器产生错误的输出,typescript,Typescript,TypeScript编译器似乎产生了错误的输出,如下所示: export default class TitleParser {} 产生: class TitleParser { } exports.TitleParser = TitleParser; 所以这里的问题是,当我试图通过导入类来使用它时,会出现一个错误。错误:titleparser\u 1.default不是函数在导入库后尝试实例化时显示: import TitleParser from './TitleParser'; con

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

export default class TitleParser {}
产生:

class TitleParser {
}
exports.TitleParser = TitleParser;
所以这里的问题是,当我试图通过导入类来使用它时,会出现一个错误。错误:
titleparser\u 1.default不是函数
在导入库后尝试实例化时显示:

import TitleParser from './TitleParser';
const parser = new TitleParser(); // the error occurs here
解决方法是导出下面的类,如下所示:

class TitleParser {}
export default TitleParser;
export class TitleParser {

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

class TitleParser {}
exports.default = TitleParser;
之后,类的使用不再抛出错误

我的编译器配置如下:

    "module": "commonjs",
    "target": "es6",
    "noImplicitAny": true,
    "outDir": "../api",
    "rootDir": "src",
    "sourceMap": true,
    "experimentalDecorators": true
和编译器版本:
1.7.5


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

在使用commonjs时,您不应该以ES6为目标(编译器通常会警告您这一点……请参阅下一段,了解可能的原因)

如果您直接从文件中复制了配置,那么在第行末尾也会缺少一个逗号:

"sourceMap": true
如果以ES5为目标并修复配置(Visual Studio代码非常擅长指出问题),则输出将是:

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,请按如下方式调整代码:

class TitleParser {}
export default TitleParser;
export class TitleParser {

}
以及:


如果您将目标设置为es5。会好的。所以考虑到语言的创造者在这里说的话:。我认为这是编译器中的一个错误。复制tsconfig文件时是一个输入错误。我通过编辑问题手动添加了experimentalDecorators选项,但忘记了逗号。问题是我需要以es6为目标,因为我使用了异步/等待特性,而以es5为目标则不起作用。此外,我使用VSCode,它从未抱怨过针对es6和使用
commonjs
。如果您想使用es6,我添加了一个建议的更改(它使用es6样式的导入和简单的导出(即非默认)。