(arg: T) => R Expressões de tipo de função

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

(arg: T) => R Expressões de tipo de função

Uma expressão de tipo de função descreve a forma de uma classe de funções: parâmetros, => e tipo de retorno ((value: string) => string | null). Dê a ela um alias de type e callbacks, validadores e middleware — tudo que é valor-função — ganham um nome reutilizável.

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

type Validator = (value: string) => string | null;
type Comparator<T> = (a: T, b: T) => number;

const required: Validator = (v) => (v.length > 0 ? null : "Required");

⚙️ Parâmetros

(value: string)Lista de parâmetros: os nomes servem apenas de documentação; a correspondência é posicional
=> string | nullTipo de retorno: leia => como "retorna"; aqui null convencionalmente significa "sem erro"

Retorno:Tipos de função são descrições puras de tipo, sem código em tempo de execução; atribuir a essa variável dispara verificações de compatibilidade item a item.

▶ Exemplo

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

Saída:

["Campo obrigatório","E-mail inválido"]
[]

(Saída de execução após a transpilação; inserir em rules uma função cujo parâmetro não é string gera um erro de compilação)

💡 Observações

ℹ️ Info Nomes de parâmetros em um tipo são apenas dicas: (v: string) => R e (value: string) => R são o mesmo tipo; a correspondência vem da posição e dos tipos.
💡 Dica Qualquer forma de função recorrente (handlers, loaders, middleware) merece um alias de type — mudanças de assinatura então tocam um único lugar.
⚠️ Atenção Com retornos string | null, quem chama recebe um valor possivelmente null e precisa verificar antes; documente explicitamente a convenção de que "null significa sem erro".
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P Expressão de tipo de função vs tipo de objeto chamável?
R (v: string) => R descreve apenas a chamada; interface { (v: string): R; version: string } também carrega propriedades (um objeto chamável). Callbacks comuns precisam apenas da expressão.
P Parâmetros de callback ainda precisam de anotações?
R Não. Em const v: Validator = (v) => ..., os tipos dos parâmetros vêm do contexto Validator (contextual typing); apenas literais de função independentes precisam de anotações.
P O que há de especial em () => void?
R Um espaço () => void aceita funções que retornam valores — o valor é simplesmente ignorado. Por isso sistemas de eventos aceitam quase qualquer callback.
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%