编译到ES6工作但失败,错误TS2693与ES5

时间:2017-09-01 13:55:48

标签: typescript

如果我使用--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);

1 个答案:

答案 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