TypeScript Academy · Aula

Publicando uma biblioteca de utilitários de tipos

Empacote e compartilhe tipos utilitários personalizados no npm

Aula 4 de 413 etapas

Publicando uma biblioteca de utilitários de 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 que é uma biblioteca de tipos utilitários

Uma biblioteca de tipos utilitários exporta somente tipos TypeScript — nenhum código em tempo de execução. Exemplos populares incluem type-fest, ts-essentials e utility-types.

// A type utility library exports types like:
export type DeepPartial<T> = T extends object
  ? { [K in keyof T]?: DeepPartial<T[K]> }
  : T;

Estrutura do projeto

Mantenha a simplicidade: um único src/index.ts que exporta novamente todos os utilitários, com tsconfig.json configurado para emitir somente declarações.

// tsconfig.json
{
  "compilerOptions": {
    "declaration": true,
    "emitDeclarationOnly": true,
    "outDir": "dist",
    "strict": true
  }
}

package.json para um pacote somente de tipos

Defina os campos main e types para apontarem para suas declarações. Defina sideEffects: false para permitir a remoção de código não utilizado.

{
  "name": "@myorg/type-utils",
  "version": "1.0.0",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "sideEffects": false,
  "files": ["dist"]
}

Gerando declarações

Execute tsc para emitir arquivos .d.ts. Em uma biblioteca somente de tipos, a saída JS é vazia ou mínima.

# Build declarations
npx tsc
# dist/index.d.ts is generated

Versionamento e registros de alterações

Siga o versionamento semântico: alterações de tipos que quebram a compatibilidade aumentam a versão principal; novos utilitários, a versão secundária; correções, a versão de correção.

# Bump version
npm version minor
# Generate changelog with conventional-changelog or changesets

Publicação no npm

Use npm publish ou pnpm publish. Para pacotes com escopo em uma organização, certifique-se de que iniciou sessão e que o escopo está definido.

npm login
npm publish --access public
# or for private: npm publish --access restricted

Compatibilidade de versões do TypeScript

Documente a versão mínima do TypeScript exigida pelos seus utilitários. Tipos condicionais recursivos exigem TS 4.1+; Awaited é integrado a partir do TS 4.5+.

// package.json peerDependencies
{
  "peerDependencies": {
    "typescript": ">=4.5"
  }
}

Testando tipos com tsd

Use o pacote tsd para escrever testes em nível de tipo que sejam executados durante a integração contínua, garantindo que seus utilitários se comportem corretamente.

import { expectType } from "tsd";
import type { DeepPartial } from "@myorg/type-utils";

expectType<DeepPartial<{ a: { b: number } }>>({ a: {} });

Documentação com TSDoc

Adicione comentários JSDoc /** */ aos seus tipos. Ferramentas como o TypeDoc geram documentação da API a partir deles.

/**
 * Makes all properties of T optional at every depth.
 * @example type A = DeepPartial<{ x: { y: number } }> // { x?: { y?: number } }
 */
export type DeepPartial<T> = ...

Distribuição em monorrepositório

Em um monorrepositório, publique o pacote de tipos como um pacote de espaço de trabalho para que outros aplicativos o consumam por meio de workspace:*, em vez do npm.

// Other package's package.json
{
  "dependencies": {
    "@myorg/type-utils": "workspace:*"
  }
}

Recapitulação: publicação de bibliotecas de tipos

Uma biblioteca de utilitários de tipos: emitDeclarationOnly: true, exporta tipos de src/index.ts, é versionada com versionamento semântico, testada com tsd, documentada com TSDoc e publicada no npm ou em um registro de espaço de trabalho.

Verificação rápida

Qual opção do tsconfig gera apenas arquivos .d.ts, sem saída JavaScript?

O que você aprendeu

Publicar uma biblioteca de utilitários de tipos exige emitDeclarationOnly, campos adequados em package.json, testes em nível de tipo com tsd, comentários TSDoc e versionamento semântico. Compartilhe seus utilitários com a comunidade ou em todo o seu monorrepositório.

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 “Publicando uma biblioteca de utilitários de tipos” é grátis?

Sim — o texto completo de “Publicando uma biblioteca de utilitários de 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 “Publicando uma biblioteca de utilitários de tipos”?

Empacote e compartilhe tipos utilitários personalizados no npm 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 “Publicando uma biblioteca de utilitários de 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. DeepPartial e DeepReadonly
  2. Utilitários Flatten e UnwrapPromise
  3. TupleToUnion e UnionToIntersection
  4. Publicando uma biblioteca de utilitários de tipos
← Voltar para TypeScript Academy