Выбор ответа Junior Утилитарные типы обновлено
Awaited и вложенные промисы
Вопрос
Какой тип у X?
type X = Awaited<Promise<Promise<number>>>;
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: number. Awaited повторяет поведение await: распаковывает промисы рекурсивно, пока не дойдёт до значения, которое не является thenable.
Варианты ответа
Promise<number>numberправильный ответPromise<Promise<number>>unknown
Разбор
Awaited повторяет поведение await: распаковывает промисы рекурсивно, пока не дойдёт до значения, которое не является thenable. Поэтому из двойного промиса получается number. Так же типизирован результат Promise.all.
Promise<number> дала бы распаковка на один уровень, например через T extends Promise<infer V> ? V : T. unknown получился бы для thenable без явного типа.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.