Typescript-将函数参数分解为数组

Typescript-将函数参数分解为数组,typescript,destructuring,Typescript,Destructuring,为什么这段代码会产生错误 let promises = [p1(), p2(), p3()]; $q.all(promises) .then(([p1Result, p2Result, p3Result]) => { // ... }); 但当我把它转到这一点时,它是有效的: let promises = [p1(), p2(), p3()]; $q.all(promises) .then(results => { let [p1Result, p2Re

为什么这段代码会产生错误

let promises = [p1(), p2(), p3()];
$q.all(promises)
  .then(([p1Result, p2Result, p3Result]) => {
    // ...
  });
但当我把它转到这一点时,它是有效的:

let promises = [p1(), p2(), p3()];
$q.all(promises)
  .then(results => {
    let [p1Result, p2Result, p3Result] = results;
    // ...
  });

我遇到的另一个问题是无法为
p1Result
p2Result
p3Result
定义类型。更不用说Typescript编译器不会推断它们的类型。

它们的工作原理相同

打字稿 生成的JavaScript:
您可以

两个代码段的输出结果是什么?理想情况下,两者都可以正常工作。您可以将类型定义为
[p1Result,p2Result,p3Result]:[p1Type,p2Type,p3Type]
甚至
结果:[p1Type,p2Type,p3Type]
。您看到的错误是什么?谢谢,我认为这是VS 2015中的一个错误。您的代码在VS中出现intellisense错误,但编译成功。我依赖intellisense。我正在使用它,它给了我使用typescript的最佳体验,但由于我们在该项目中使用的其他部分代码,而实际上我今天正在考虑这一点;)事实上,这是Resharper的错误!
declare var $q: any;
declare var p1: any;
declare var p2: any;
declare var p3: any;
let promises = [p1(), p2(), p3()];


$q.all(promises)
  .then(([p1Result, p2Result, p3Result]) => {
    // ...
  });

$q.all(promises)
  .then(results => {
    let [p1Result, p2Result, p3Result] = results;
    // ...
  });
var promises = [p1(), p2(), p3()];
$q.all(promises)
    .then(function (_a) {
    var p1Result = _a[0], p2Result = _a[1], p3Result = _a[2];
    // ...
});
$q.all(promises)
    .then(function (results) {
    var p1Result = results[0], p2Result = results[1], p3Result = results[2];
    // ...
});