1

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

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 编译器不会推断它们的类型。

4

1 回答 1

1

他们都工作相同

打字稿

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;
    // ...
  });

生成的 JavaScript:

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];
    // ...
});

你可以看到 TypeScript 对这两个代码示例都很满意

于 2015-10-27T23:38:00.307 回答