Publicando uma biblioteca de utilitários de tipos
Empacote e compartilhe tipos utilitários personalizados no npm
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 generatedVersionamento 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 changesetsPublicaçã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 restrictedCompatibilidade 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.
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
- DeepPartial e DeepReadonly
- Utilitários Flatten e UnwrapPromise
- TupleToUnion e UnionToIntersection
- Publicando uma biblioteca de utilitários de tipos