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
这是编译器中的错误还是我做错了什么?编译器从不抱怨。
答案 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,请按以下方式调整代码:
export class TitleParser {
}
和
import {TitleParser} from './titleparser'
var x = new TitleParser();