如果我使用--t ES5编译以下代码,它会给我一个错误TS2693:' Promise'仅指类型,但在此处用作值。当我使用--t ES6时它编译得很好。这是编译器中的错误(我使用的是TypeScript 2.4.2)吗?
import {Subject} from 'rxjs/Subject';
enum Action{
buy = 'BUY',
sell = 'SELL'
}
class Order{
constructor(public orderId: number, public traderId: number,
public stock: string, public shares: number, public action:Action){}
}
class Trader {
orders: Subject<Order> = new Subject<Order>();
constructor(private traderId:number, private traderName:string){}
placeOrder(order: Order){
this.orders.next(order);
console.log(`Placing order to ${order.action} ${order.shares} shares of ${order.stock}`);
}
}
let trader: Trader = new Trader(1, 'Joe');
let order1:Order = new Order(1, 1,'IBM',100,Action.buy);
trader.placeOrder( order1);
答案 0 :(得分:1)
承诺被引入为part of ES6。因此TypeScript在针对ES5时不知道Promise
是什么是正确的。
如果你想定位ES5并仍然使用Promises,你可以在tsconfig.json
中添加以下内容:
"compilerOptions": {
// ...
"target": "es5",
"lib": [
"es2015.promise" // Or "es2015" or "es6" should work as well
]
}
如果您通过命令行传递配置,则选项为--lib
。
请参阅compiler options。