Promise<T> Tipos assíncronos
Última atualização: 2026-10-22
Promise<T> Tipos assíncronos
Os tipos assíncronos giram em torno de Promise<T>: o tipo de retorno de uma função async é automaticamente embrulhado em um Promise, e await o desembrulha no nível de valor; o tipo utilitário Awaited<T> faz o mesmo no nível de tipo (desembrulhando Promises aninhadas até o fim). Uma vez sabendo "que tipo vive dentro do Promise", cada variável no código assíncrono ganha um tipo preciso.
| Grupo | Configuração e Prática |
|---|---|
| Tipo | Sintaxe |
| Modo strict | Não necessário |
ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.
📝 Sintaxe
// funções async: o tipo de retorno é sempre embrulhado em Promise<T>
async function fetchUser(id: number): Promise<User> {
const res = await getJson("/users/" + id); // await desenrola uma camada da Promise
return res; // o valor retornado é User
}
// Awaited<T>: await no nível dos tipos
type A = Awaited<Promise<User>>; // User
type B = Awaited<Promise<Promise<User>>>; // User — aninhadas também são desenroladas até o fim
⚙️ Parâmetros
| Promise<T> | Um contêiner genérico nativo; T é o tipo do valor que se obtém eventualmente. Funciona com async/await de fábrica, sem importações |
|---|---|
| async | Modificador de função: permite await dentro; o valor de retorno é automaticamente embrulhado em um Promise — um T simples se torna Promise<T>, Promises existentes não são embrulhados duas vezes |
| Awaited<T> | Tipo utilitário nativo que imita o await: desembrulha Promise<T>, desembrulha recursivamente o aninhamento e passa tipos não-Promise inalterados |
Retorno:Uma função async retorna Promise<T>: quer o corpo retorne um T simples ou um Promise<T>, o tipo final é Promise<T> (nunca Promise<Promise<T>>).
▶ Exemplo
Edite o código abaixo e clique em Testar para ver o resultado transpilado:
Saída:
{"id":7,"title":"Write TypeScript notes","done":false}
todo#7 title="Write TypeScript notes" done=false
(Saída de execução após a transpilação; todo é inferido como Todo por meio do await — sem await, você segura um Promise<Todo>, e acessar todo.id diretamente é um erro de tipo)