Typescript 使用ES5编译到ES6可以工作,但失败,错误为TS2693
如果我用--tes5编译下面的代码,它会给我一个错误TS2693:“Promise”只引用一个类型,但在这里被用作一个值。当我使用--tes6时,它编译得很好。这是编译器中的错误吗(我使用TypeScript 2.4.2)Typescript 使用ES5编译到ES6可以工作,但失败,错误为TS2693,typescript,Typescript,如果我用--tes5编译下面的代码,它会给我一个错误TS2693:“Promise”只引用一个类型,但在这里被用作一个值。当我使用--tes6时,它编译得很好。这是编译器中的错误吗(我使用TypeScript 2.4.2) 从'rxjs/Subject'导入{Subject}; 枚举操作{ 买入=‘买入’, 卖出=‘卖出’ } 阶级秩序{ 构造函数(public orderId:number,public traderId:number, 公开股票:字符串,公开股票:编号,公开操作:操作{} }
从'rxjs/Subject'导入{Subject};
枚举操作{
买入=‘买入’,
卖出=‘卖出’
}
阶级秩序{
构造函数(public orderId:number,public traderId:number,
公开股票:字符串,公开股票:编号,公开操作:操作{}
}
阶级商人{
订单:主题=新主题();
构造函数(private-traderrid:number,private-traderName:string){}
placeOrder(订单:订单){
这个.命令.下一个(命令);
console.log(`Placing order to${order.action}${order.shares}}${order.stock}`的共享);
}
}
let trader:trader=新交易者(1,‘Joe’);
let order1:Order=新订单(1,1,'IBM',100,Action.buy);
交易者.下订单(订单1);
承诺是作为一种方式引入的。因此,当针对ES5时,TypeScript不知道承诺是什么是正确的
如果您希望以ES5为目标,并且仍然使用承诺,那么可以在tsconfig.json
中添加以下内容:
"compilerOptions": {
// ...
"target": "es5",
"lib": [
"es2015.promise" // Or "es2015" or "es6" should work as well
]
}
如果通过命令行传递配置,则选项为--lib
。
请参阅。ES5不支持承诺。如果需要ES5代码,可以添加一个后备js来支持它。
"compilerOptions": {
// ...
"target": "es5",
"lib": [
"es2015.promise" // Or "es2015" or "es6" should work as well
]
}