Одно обещание с неопределенным типом возвращаемого значения заражает другие обещания в Promise.all неопределенным - PullRequest
1 голос
/ 17 февраля 2020

У меня есть несколько ожидающих функций:

public async func1(): Promise<ResultType1>();
public async func2(): Promise<ResultType2>();

Одна из них может вернуть undefined:

public async func3(): Promise<ResultType3|undefined>();

(Весь код упрощен, и все производственные ошибки удалены для удобочитаемость).

Когда я использую Promise.all в первых двух функциях, все хорошо:

const resultAll = await Promise.all([func1(), func2()];
// resultAll: [ResultType1, ResultType2]

Но когда я включаю func3 в массив обещаний ждать, вдруг ВСЕ возвращаемые значения могут быть undefined:

const resultAll2 = await Promise.all([func1(), func2(), func3()]);
// resultAll: [ResultType1 | undefined, ResultType2 | undefined, ResultType3 | undefined]

Но я хочу получить значение типа [ResultType1, ResultType2, ResultType3 | undefined].

Почему это происходит и как этого избежать?

1 Ответ

1 голос
/ 17 февраля 2020

Спасибо за этот ответ , я смог исправить это, явно объявив типы:

const resultAllExplicit = await Promise.all<ResultType1, ResultType2, ResultTyp3 | undefined>([func1(), func2(), func3()]);

Все еще любопытно, что является причиной этого.

...