Загрузка...
Загрузка...
Awaited — это утилитный тип в TypeScript, введённый в версии 4.5, который извлекает значение из Promise. Если функция или переменная возвращает Promise<T>, то Awaited<T> выдаст сам T.
Awaited<T>
T — тип, который может быть промисом или значением.T является промисом (Promise<U>), то Awaited<T> возвращает тип U.T — не промис, то Awaited<T> возвращает сам T.async function getData(): Promise<number> {
return 42;
}
type DataType = Awaited<ReturnType<typeof getData>>;
// DataType → number
В этом примере:
fetchData возвращает Promise<number>.ReturnType<typeof fetchData> извлекает тип возвращаемого значения функции, т.е. Promise<number>.Awaited<Promise<number>> распаковывает промис, возвращая тип number.type NestedPromise = Promise<Promise<string>>;
type Result = Awaited<NestedPromise>;
// Result → string
Упрощение работы с асинхронными функциями
Awaited позволяет явно указать тип результата, полученного после ожидания промиса, что упрощает типизацию и уменьшает дублирование.
Рекурсивное извлечение типов
При работе с вложенными промисами Awaited автоматически «распаковывает» вложенные типы, возвращая конечное значение.
Поддержка асинхронных утилит
Awaited полезен при построении обобщённых утилит для работы с асинхронным кодом, где важно знать точный тип данных после разрешения промиса.
T не является промисом, Awaited просто возвращает T без изменений.Awaited — мощный утилитный тип, который позволяет автоматически извлекать тип значений из промисов. Он особенно полезен для асинхронного программирования в TypeScript, обеспечивая точную типизацию возвращаемых данных и упрощая работу с вложенными промисами.