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