O Operador de Tipo typeof
Capture o tipo de um valor em tempo de execução com typeof.
O Operador de Tipo typeof é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Tipos a partir de valores
O operador de tipo typeof deriva um tipo estático a partir de um valor em tempo de execução. Ele permite escrever um valor uma vez e reutilizar sua estrutura como um tipo, mantendo ambos perfeitamente sincronizados.
Dois usos de typeof
Não os confunda: o typeof do JavaScript retorna uma cadeia de caracteres em tempo de execução; o typeof do TypeScript aparece em uma posição de tipo e produz um tipo. A mesma palavra-chave, mas em mundos diferentes.
const n = 42
console.log(typeof n) // "number" — JS runtime
type T = typeof n // number — TS type positionCapturando o tipo de uma variável
Coloque typeof antes de um valor em uma anotação de tipo para capturar o tipo inferido desse valor. Aqui, T se torna string.
const greeting = "hello"
type G = typeof greeting // string
const another: G = "world"
console.log(another)Capturando a estrutura de um objeto
Aplicado a um objeto const, typeof fornece sua estrutura totalmente inferida — não é necessário escrever a interface manualmente.
const config = { host: "localhost", port: 8080 }
type Config = typeof config // { host: string; port: number }
const c: Config = { host: "127.0.0.1", port: 3000 }
console.log(c)A inferência amplia por padrão
Sem ajuda, o TypeScript amplia os literais: port: 8080 se torna number, não o literal 8080. Isso costuma ser adequado, mas às vezes você quer preservar o valor exato.
const settings = { mode: "dark" }
type S = typeof settings // { mode: string }
const x: S = { mode: "anything" }
console.log(x)typeof com as const
Adicione as const para congelar um valor em seu tipo literal mais restrito. Agora, typeof captura os literais exatos e marca tudo como readonly.
const settings = { mode: "dark" } as const
type S = typeof settings // { readonly mode: "dark" }
const x: S = { mode: "dark" }
console.log(x)Tipos literais a partir de vetores
Com as const, aplicar typeof a um vetor fornece uma tupla readonly de tipos literais — um bloco de construção para derivar uniões de valores.
const roles = ["admin", "editor", "viewer"] as const
type Roles = typeof roles // readonly ["admin", "editor", "viewer"]
console.log(roles[0])Derivando uma união de valores
Combine typeof com acesso indexado por [number] para transformar um vetor de constantes em um tipo de união de seus valores.
const roles = ["admin", "editor", "viewer"] as const
type Role = typeof roles[number] // "admin" | "editor" | "viewer"
const r: Role = "editor"
console.log(r)typeof em funções
Você também pode capturar o tipo de uma função. Isso é útil para tipar encapsuladores ou reutilizar uma assinatura em outro lugar.
function add(a: number, b: number) { return a + b }
type AddFn = typeof add // (a: number, b: number) => number
const myAdd: AddFn = (x, y) => x + y
console.log(myAdd(2, 3))Mantendo os tipos sincronizados
A grande vantagem é definir configurações ou constantes uma única vez como valores e, em seguida, derivar os tipos com typeof. Altere o valor e o tipo será atualizado automaticamente — sem duplicação.
const defaults = { retries: 3, timeout: 1000 }
type Defaults = typeof defaults
function apply(opts: Defaults) { return opts.retries }
console.log(apply(defaults))Funciona apenas com identificadores
O operador de tipo typeof aceita um identificador ou caminho de propriedade, não uma expressão arbitrária. typeof (a + b) não é permitido.
const obj = { user: { name: "Ada" } }
type Name = typeof obj.user.name // string
const n: Name = "Leo"
console.log(n)Verificação rápida
Teste sua compreensão do operador de tipo typeof.
Recapitulação
O operador de tipo typeof (em uma posição de tipo) deriva um tipo a partir de um valor — uma variável, um objeto, um vetor ou uma função. Por padrão, os literais são ampliados; adicione as const para capturar tipos literais exatos como readonly. Combinado com acesso indexado (typeof arr[number]), ele produz uniões de valores. Derivar tipos a partir de valores mantém uma única fonte de verdade e evita duplicar estruturas.
Aprenda TypeScript com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 101
- Aulas
- 352
Perguntas Frequentes
A aula “O Operador de Tipo typeof” é grátis?
Sim — o texto completo de “O Operador de Tipo typeof” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “O Operador de Tipo typeof”?
Capture o tipo de um valor em tempo de execução com typeof. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “O Operador de Tipo typeof”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O Operador de Tipo typeof
- O Operador de Tipo keyof
- Tipos de Acesso Indexado
- Combinando typeof e keyof