TypeScript Academy · Aula

Lidando com bibliotecas de terceiros sem tipos

Utilize pacotes @types e escreva declarações manuais

Aula 4 de 413 etapas

Lidando com bibliotecas de terceiros sem tipos é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 4 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.

O problema: tipos ausentes

Alguns pacotes npm não fornecem declarações de TypeScript e não têm um pacote @types/. Por padrão, TypeScript os trata como any, perdendo a segurança de tipos nessa fronteira.

import legacyLib from "untyped-lib"; // legacyLib: any

Pacotes @types

O projeto DefinitelyTyped fornece declarações de tipos mantidas pela comunidade para milhares de bibliotecas. Pesquise no npm por @types/library-name.

npm install --save-dev @types/lodash
npm install --save-dev @types/express
# Now lodash and express have full TypeScript types

Escrevendo um arquivo de declaração (.d.ts)

Se não existir um pacote @types, escreva um arquivo de declaração mínimo no seu projeto para declarar o módulo e seus tipos.

// src/types/untyped-lib.d.ts
declare module "untyped-lib" {
  export function doSomething(x: string): number;
  export const version: string;
}

Ampliação de módulos

Amplie tipos de terceiros existentes adicionando suas próprias declarações a um módulo existente, sem criar uma bifurcação dele.

// Extend Express Request with a custom property
declare namespace Express {
  interface Request {
    user?: AuthUser;
  }
}

Declarações curinga de módulos

Para categorias inteiras de importações sem tipos, como arquivos de recursos, use declarações curinga de módulos.

// src/types/assets.d.ts
declare module "*.svg" {
  const content: string;
  export default content;
}
declare module "*.json" {
  const value: Record<string, unknown>;
  export default value;
}

noImplicitAny e bibliotecas sem tipos

Com noImplicitAny: true, importar um módulo sem tipos causa um erro de compilação. Use um arquivo de declaração ou desabilite noImplicitAny por arquivo com // @ts-ignore.

// Quick fix for a single untyped import:
// @ts-ignore
import untypedLib from "untyped-lib";

Contribuindo para DefinitelyTyped

Se você escrever tipos de alta qualidade para uma biblioteca sem tipos, envie-os ao DefinitelyTyped para ajudar a comunidade.

# Fork DefinitelyTyped and add:
# types/your-library/index.d.ts
# types/your-library/package.json
# Submit a PR at github.com/DefinitelyTyped/DefinitelyTyped

Usando any como último recurso

Quando não for possível obter os tipos rapidamente, use any explícito com um comentário que acompanhe essa dívida. Isso é melhor do que o any implícito, pois é intencional e visível.

// eslint-disable-next-line @typescript-eslint/no-explicit-any
const lib: any = require("untyped-lib"); // TODO: add types

skipLibCheck para erros de declarações

Se um arquivo .d.ts de terceiros tiver erros internos, skipLibCheck: true os silencia sem afetar sua própria verificação de tipos.

{
  "compilerOptions": {
    "skipLibCheck": true
  }
}

Adaptadores de tipos para bibliotecas inseguras

Escreva um módulo adaptador tipado em torno de uma biblioteca sem tipos para conter o any e expor uma API tipada e segura ao restante da sua base de código.

// src/lib/safe-legacy.ts
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const raw: any = require("untyped-lib");
export function doSomething(x: string): number { return raw.doSomething(x); }

Recapitulação: bibliotecas sem tipos

Para lidar com bibliotecas sem tipos: verifique primeiro os pacotes @types/, escreva arquivos de declaração mínimos, use ampliação de módulos, crie adaptadores tipados e use skipLibCheck para erros de declarações nas dependências.

Verificação rápida

Qual é o primeiro lugar onde procurar declarações de tipos para um pacote npm sem tipos?

O que você aprendeu

Bibliotecas sem tipos: verifique os pacotes @types/, escreva arquivos de declaração, amplie tipos existentes, use declarações curinga de módulos, envolva bibliotecas inseguras em fachadas tipadas e use skipLibCheck para erros de dependências.

Grátis para começar

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 “Lidando com bibliotecas de terceiros sem tipos” é grátis?

Sim — o texto completo de “Lidando com bibliotecas de terceiros sem tipos” é 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 “Lidando com bibliotecas de terceiros sem tipos”?

Utilize pacotes @types e escreva declarações manuais 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 4 de 4.

Quanto tempo leva a aula “Lidando com bibliotecas de terceiros sem tipos”?

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. Iniciando a migração: allowJs e checkJs
  2. Anotações de tipos JSDoc como ponte
  3. Estratégia de conversão arquivo por arquivo
  4. Lidando com bibliotecas de terceiros sem tipos
← Voltar para TypeScript Academy