Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 使用ES5编译到ES6可以工作,但失败,错误为TS2693_Typescript - Fatal编程技术网

Typescript 使用ES5编译到ES6可以工作,但失败,错误为TS2693

Typescript 使用ES5编译到ES6可以工作,但失败,错误为TS2693,typescript,Typescript,如果我用--tes5编译下面的代码,它会给我一个错误TS2693:“Promise”只引用一个类型,但在这里被用作一个值。当我使用--tes6时,它编译得很好。这是编译器中的错误吗(我使用TypeScript 2.4.2) 从'rxjs/Subject'导入{Subject}; 枚举操作{ 买入=‘买入’, 卖出=‘卖出’ } 阶级秩序{ 构造函数(public orderId:number,public traderId:number, 公开股票:字符串,公开股票:编号,公开操作:操作{} }

如果我用--tes5编译下面的代码,它会给我一个错误TS2693:“Promise”只引用一个类型,但在这里被用作一个值。当我使用--tes6时,它编译得很好。这是编译器中的错误吗(我使用TypeScript 2.4.2)

从'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
    ]
}