JSDoc массив из Promise.All - PullRequest
       24

JSDoc массив из Promise.All

0 голосов
/ 01 марта 2019

Я пытаюсь задокументировать результат 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 голосов
/ 02 марта 2019

ES6 externs для 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) {};

Хотя я думаю, что определение этого способа сработало бы, интересноВы могли бы просто включить это externs?Конечно, это имеет смысл, только если вы используете Closure Compiler.

...