Напиши тип Middle Дженерики обновлено
Тип результата Promise.all
Вопрос
Какой тип получится? Впишите тип.
async function load() {
const r = await Promise.all([Promise.resolve(1), 'a']);
return r; // r: /* ? */
}
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: [number, string]. Promise.all типизирован через mapped-тип по кортежу: { -readonly [P in keyof T]: Awaited<T[P] }.
Правильный тип
[number, string]
Разбор
Promise.all типизирован через mapped-тип по кортежу: { -readonly [P in keyof T]: Awaited<T[P]> }. Массивный литерал в аргументе выводится как кортеж, поэтому получаем [number, string], а не (string | number)[]. Awaited разворачивает промисы, а не-промисы оставляет как есть. Литерал 'a' расширяется до string, потому что элемент массива изменяемый.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.