我有这样的代码:
import { SuperClass } from 'some-library';
export class MyClass extends SuperClass {
constructor() {
super();
}
}
程序失败,并显示如下错误:
var _this = _super.call(this)) || this;
^
TypeError: Class constructor SuperClass cannot be invoked without 'new'
正如here所回答的那样,这个问题是由TypeScript将类转移到ES5而SuperClass是ES6类这一事实引起的。
引用的答案说将TypeScript的“target”选项设置为es6应该可以修复它。但是,如果我这样做,TypeScript仍然输出ES5类。将“target”设置为“es2018”或“2020”也没有帮助。无论我做什么,输出如下所示:
var MyClass = /** @class */ (function (_super) {
__extends(MyClass, _super);
function MyClass() {
这是我的tsconfig.json:
{
"compilerOptions": {
"target": "ES2018",
"module": "commonjs",
"lib": ["es2018"],
"composite": true
},
"include": ["*.ts"]
}
如何让TypeScript输出ES6类?
1条答案
按热度按时间2hh7jdfx1#
事实证明target=es6 * 确实 * 有效,问题实际上是我运行了
tsc myfile.ts
而不是tsc
(没有参数)。当文件作为参数传递时,则tsc ignores tsconfig.json,这就是为什么我的tsconfig.json中的“target”选项无效的原因。如果我将--target=es6
作为CLI参数传递,则TypeScript将我的类正确地转换为ES6类。