0Pricing
TypeScript Academy · Aula

Eliminando any; preferindo unknown e redução

Substitua any por unknown + redução; adicione pequenas guardas e funções de asserção; ative as opções de rigor gradualmente sem interromper a compilação.

Eliminando any; preferindo unknown e redução é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 de 2. 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 2 aulas no total.

Introdução

Objetivo: Remover os pontos problemáticos de any. Prefira unknown para valores não confiáveis e faça o estreitamento com verificações simples. Você adicionará pequenas proteções e ativará opções de rigor passo a passo.

  • any → unknown
  • Estreitamento com typeof/in/instanceof
  • Funções de asserção

Armadilhas de any

any desativa a segurança: formatos incorretos ou operações matemáticas com strings passam pela compilação e falham mais tarde.

// any hides bugs
function avgBad(values: any): number {
  // Compiles even if values is not an array of numbers
  return values.reduce((a: number, b: number) => a + b, 0) / values.length
}

// Runtime crash examples:
// avgBad(123)
// avgBad(["1","2"]) // string addition!

unknown + estreitamento

Use unknown para entradas externas. Faça o estreitamento com Array.isArray e typeof e depois calcule com segurança.

// unknown forces checks
function avg(values: unknown): number {
  if (!Array.isArray(values)) throw new Error("values must be an array")
  const nums = values.filter((v): v is number => typeof v === "number")
  if (nums.length === 0) throw new Error("no numbers")
  const sum = nums.reduce((a, b) => a + b, 0)
  return sum / nums.length
}

// avg([1,2,3]) → 2; avg("oops") throws early with a clear message

Proteções de tipo

Crie um predicado x is T para estreitar os tipos de quem chama a função de forma clara. Mantenha as proteções pequenas e concentradas em verificações estruturais.

// Small predicate to reuse narrowing
export type User = { id: string; name: string }

export function isUser(x: unknown): x is User {
  return typeof x === "object" && x !== null
    && typeof (x as any).id === "string"
    && typeof (x as any).name === "string"
}

export function hello(x: unknown) {
  if (!isUser(x)) throw new Error("invalid user")
  return `Hello, ${x.name}`
}

Funções de asserção

Funções de asserção (asserts x is T) fazem o estreitamento depois de serem executadas. Use-as para pré-condições obrigatórias e lance exceções com mensagens claras.

// Assertion function throws or narrows
function assertUser(x: unknown): asserts x is { id: string; name: string } {
  if (typeof x !== "object" || x === null) throw new Error("not an object")
  const o = x as Record<string, unknown>
  if (typeof o.id !== "string" || typeof o.name !== "string") throw new Error("bad user")
}

export function greetUnsafe(x: unknown) {
  assertUser(x) // now x is narrowed after this call
  return `Hi ${x.name}`
}

Plano de rigor

Plano:

  • Ative noImplicitAny e corrija primeiro os novos erros.
  • Introduza proteções para entradas externas.
  • Ative strictNullChecks e trate undefined explicitamente.
  • Acompanhe o any restante com o ESLint e reduza seu uso ao longo do tempo.

Verificação de unknown versus any

Verificação rápida: Por que preferir unknown a any para dados não confiáveis?

Recapitulação

Recapitulação: Substitua any por unknown, adicione pequenas proteções ou asserções e aumente as opções de rigor em etapas pequenas para manter as compilações funcionando.

Perguntas Frequentes

A aula “Eliminando any; preferindo unknown e redução” é grátis?

Sim — o texto completo de “Eliminando any; preferindo unknown e redução” é 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 2 aulas no total.

O que vou aprender em “Eliminando any; preferindo unknown e redução”?

Substitua any por unknown + redução; adicione pequenas guardas e funções de asserção; ative as opções de rigor gradualmente sem interromper a compilação. 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 2.

Quanto tempo leva a aula “Eliminando any; preferindo unknown e redução”?

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

  1. Eliminando any; preferindo unknown e redução
  2. Aplicação gradual de flags estritas
← Voltar para TypeScript Academy