name(arg: T): R Anotações de tipo de função

Última atualização: 2026-10-22

name(arg: T): R Anotações de tipo de função

As anotações de função declaram os tipos dos parâmetros e do valor de retorno: quem chama vê de imediato o que passar e o que recebe de volta, e argumentos com tipos errados falham em tempo de compilação. A inferência serve como fallback, mas anotações explícitas são higiene básica para APIs públicas.

GrupoFunções e Classes
TipoSintaxe
Modo strictNã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

// Taxa de frete = base + adicional por quilo
function shippingFee(weightKg: number, express: boolean): number {
  return 8 + weightKg * (express ? 3.5 : 1.5);
}

const calc: (w: number, express: boolean) => number = shippingFee;

// Sem retorno significativo → void
function notify(msg: string): void {
  console.log(msg);
}

⚙️ Parâmetros

weightKg: numberAnotação de parâmetro: dois-pontos e o tipo após o nome; tipos errados são erros de compilação
): numberAnotação de retorno: vem após a lista de parâmetros; cada instrução return precisa ser compatível com esse tipo
voidSignifica "sem retorno significativo"; quem chama não deve usar o resultado

Retorno:O tipo de retorno vem após a lista de parâmetros (: number); o compilador verifica cada return em relação a ele. Se omitido, o TS infere a partir do corpo da função.

▶ Exemplo

Edite o código abaixo e clique em Testar para ver o resultado transpilado:

Saída:

Normal: 11
Expresso: 15

(Saída de execução após a transpilação; shippingFee(2, "yes") gera um erro de compilação — o segundo parâmetro deve ser boolean)

💡 Observações

ℹ️ Info Os tipos de retorno geralmente podem ser omitidos (a inferência é inteligente), mas funções exportadas devem declará-los explicitamente — assim, mudanças na implementação não alteram silenciosamente o contrato público.
⚠️ Atenção Anotações de parâmetro não podem ser omitidas: ao contrário das variáveis, parâmetros de funções independentes sem anotação geram erro com noImplicitAny — o TS não tem como adivinhar o que será passado.
💡 Dica Parâmetros de callback dispensam anotações: quando a variável/parâmetro já tem um tipo de função, os parâmetros da implementação recebem tipos via contextual typing (veja a entrada contextual-typing).
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P Quando a anotação do tipo de retorno é obrigatória?
R Três casos típicos: APIs exportadas, funções recursivas e quando a inferência não traz o resultado desejado (por exemplo, um tipo união sendo alargado). Funções internas podem confiar na inferência.
P Existe diferença entre : void e : undefined?
R Sim. void significa "valor de retorno ignorado" e qualquer função é atribuível a ele; undefined é um tipo concreto — a função precisa de fato retornar undefined.
P Posso simplesmente anotar os parâmetros como any?
R Compila, mas anula o propósito: any desativa toda a verificação desse parâmetro e do retorno. Prefira tipos precisos; use unknown com estreitamento (narrowing) quando "qualquer coisa" for de fato permitido.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%