Principais erros de desenvolvedores TypeScript iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Top erros de desenvolvedores TypeScript iniciantes

TypeScript é uma ferramenta poderosa que ajuda a escrever código mais confiável e sustentável. No entanto, como qualquer linguagem, ele esconde armadilhas, especialmente para iniciantes. Muitos desenvolvedores vêm do JavaScript e continuam usando velhos hábitos, anulando as vantagens da tipagem estática. Neste artigo, vamos analisar os 4 erros mais comuns de desenvolvedores TypeScript iniciantes, mostrar como corrigi-los e dar dicas práticas. Se você está começando sua jornada com TypeScript, este artigo vai ajudá-lo a evitar as armadilhas típicas.



1. Abuso do tipo any

O erro mais comum é usar any em todos os lugares onde o TypeScript não consegue inferir o tipo automaticamente. Iniciantes frequentemente escrevem assim:

function processData(data: any) {    console.log(data.name.toUpperCase());}

Isso desativa completamente a verificação de tipos para a variável data. Você perde todas as vantagens do TypeScript: autocompletar, verificação de erros e documentação do código.

O que fazer em vez disso?

Sempre tente descrever o tipo explicitamente, mesmo que seja complexo. Use unknown se o tipo for realmente desconhecido no momento da escrita do código:

function processData(data: unknown) {    if (typeof data === 'object' && data !== null && 'name' in data) {        console.log((data as { name: string }).name.toUpperCase());    }}

Ou, melhor ainda, descreva a interface:

interface DataItem {    name: string;    age?: number;}

function processData(data: DataItem) { console.log(data.name.toUpperCase());}

Dica: Configure noImplicitAny: true no tsconfig.json. O compilador reclamará de qualquer any implícito, e você se acostumará a escrever tipos.



2. Ignorar strictNullChecks

Em JavaScript, null e undefined são valores normais. Em TypeScript, sem verificações estritas, você pode acidentalmente acessar uma propriedade de null e obter um erro em tempo de execução. Erro típico:

function getLength(str: string | null) {    return str.length; // Erro: Object is possibly 'null'}

Se strictNullChecks estiver desligado, o TypeScript não vai avisá-lo, e o erro só aparecerá em tempo de execução.

Solução: Ative strict: true no tsconfig.json. Isso ativará automaticamente strictNullChecks. Agora o TypeScript forçará você a lidar com null e undefined:

function getLength(str: string | null): number {    if (str === null) {        return 0;    }    return str.length;}

// Ou use optional chaining e nullish coalescing:function getLengthSafe(str: string | null): number { return str?.length ?? 0;}

Importante: Nunca desative strictNullChecks. Este é um dos principais recursos do TypeScript que previne milhões de bugs.



3. Trabalho incorreto com async/await e promises

TypeScript tipa estritamente funções assíncronas, mas iniciantes frequentemente esquecem o tipo de retorno Promise. Exemplo de erro:

async function fetchUser(id: number) {    const response = await fetch(`/api/users/${id}`);    return response.json(); // TypeScript pode não saber o tipo exato}

Aqui, response.json() retorna Promise<any>, e você novamente perde a tipagem. Um segundo problema comum é esquecer de tratar erros:

async function loadData() {    const data = await fetchUser(1); // Se fetch falhar, o erro não é tratado    console.log(data.name);}

Como fazer corretamente?

Sempre especifique explicitamente o tipo de retorno da função assíncrona e trate os erros adequadamente:

interface User {    id: number;    name: string;}

async function fetchUser(id: number): Promise<User> { const response = await fetch(`/api/users/${id}`); if (!response.ok) { throw new Error(`Failed to fetch user: ${response.statusText}`); } return response.json() as Promise<User>;}

async function loadData() { try { const data = await fetchUser(1); console.log(data.name); } catch (error) { console.error('Error loading data:', error); }}

Blogs

Book Recommendations