JSDoc来自Promise.All的数组

时间:2019-03-01 16:35:49

标签: node.js types promise jsdoc

我尝试记录Promise.all结果,因为一旦我对数据进行了结构分解,类型就会丢失。

这里是一个例子,(我试图把它放在一个闭包中)

      const promiseAll = () => {
        return Promise.all([
          this.b2bCompanies.getCompany(companyId, token),
          this.b2BFacade.getProfile(profileId, token),
        ]);
      };

      const [company, profile] = await promiseAll();

原始代码是:

      const [company, profile] = await Promise.all([
        this.b2bCompanies.getCompany(companyId, token),
        this.b2BFacade.getProfile(profileId, token),
      ]);

公司和个人资料变为*,但是this.b2bCompanies.getCompany返回CompanySchema,个人资料称为ProfileSchema

有什么主意,我该如何做到这一点并保持正确键入的代码?

谢谢:)

1 个答案:

答案 0 :(得分:0)

ES6 externs for Closure Compiler以此方式定义Promise.all

/**
 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
 * @param {!Iterable<VALUE>} iterable
 * @return {!Promise<!Array<RESULT>>}
 * @template VALUE
 * @template RESULT := mapunion(VALUE, (V) =>
 *     cond(isUnknown(V),
 *         unknown(),
 *         cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
 *             templateTypeOf(V, 0),
 *             cond(sub(V, 'Thenable'), unknown(), V))))
 * =:
 */
Promise.all = function(iterable) {};

虽然我认为以这种方式定义它会起作用,但我想知道您是否可以只包括这些外部元素?当然,只有在使用Closure Compiler时才有意义。