Publier une bibliothèque d’utilitaires de types
Empaquetez et partagez des types utilitaires personnalisés sur npm
Publier une bibliothèque d’utilitaires de types est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 4 leçons au total.
Qu’est-ce qu’une bibliothèque de types utilitaires ?
Une bibliothèque de types utilitaires n’exporte que des types TypeScript — aucun code d’exécution. Parmi les exemples populaires figurent type-fest, ts-essentials et utility-types.
// A type utility library exports types like:
export type DeepPartial<T> = T extends object
? { [K in keyof T]?: DeepPartial<T[K]> }
: T;Structure du projet
Faites simple : un seul src/index.ts qui réexporte tous les utilitaires, avec tsconfig.json configuré pour émettre uniquement les déclarations.
// tsconfig.json
{
"compilerOptions": {
"declaration": true,
"emitDeclarationOnly": true,
"outDir": "dist",
"strict": true
}
}package.json pour un paquet réservé aux types
Définissez les champs main et types afin qu’ils pointent vers vos déclarations. Définissez sideEffects: false pour permettre l’élimination du code inutilisé.
{
"name": "@myorg/type-utils",
"version": "1.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"sideEffects": false,
"files": ["dist"]
}Génération des déclarations
Exécutez tsc pour générer les fichiers .d.ts. Pour une bibliothèque réservée aux types, la sortie JS est vide ou réduite au minimum.
# Build declarations
npx tsc
# dist/index.d.ts is generatedVersionnage et journaux des modifications
Suivez le versionnage sémantique : les changements de types incompatibles entraînent une version majeure, les nouveaux utilitaires une version mineure et les corrections une version de correctif.
# Bump version
npm version minor
# Generate changelog with conventional-changelog or changesetsPublication sur npm
Utilisez npm publish ou pnpm publish. Pour les paquets associés à une portée sous une organisation, vérifiez que vous êtes connecté et que la portée est définie.
npm login
npm publish --access public
# or for private: npm publish --access restrictedCompatibilité des versions de TypeScript
Documentez la version minimale de TypeScript requise par vos utilitaires. Les types conditionnels récursifs nécessitent TS 4.1 ou une version ultérieure, et Awaited est intégré depuis TS 4.5.
// package.json peerDependencies
{
"peerDependencies": {
"typescript": ">=4.5"
}
}Tester les types avec tsd
Utilisez le paquet tsd pour écrire des tests au niveau des types qui s’exécutent pendant l’intégration continue afin de garantir le bon fonctionnement de vos utilitaires.
import { expectType } from "tsd";
import type { DeepPartial } from "@myorg/type-utils";
expectType<DeepPartial<{ a: { b: number } }>>({ a: {} });Documentation avec TSDoc
Ajoutez des commentaires JSDoc /** */ à vos types. Des outils comme TypeDoc génèrent la documentation de l’API à partir de ces commentaires.
/**
* Makes all properties of T optional at every depth.
* @example type A = DeepPartial<{ x: { y: number } }> // { x?: { y?: number } }
*/
export type DeepPartial<T> = ...Distribution dans un monodépôt
Dans un monodépôt, publiez le paquet de types comme paquet d’espace de travail afin que les autres applications le consomment via workspace:* plutôt que via npm.
// Other package's package.json
{
"dependencies": {
"@myorg/type-utils": "workspace:*"
}
}Récapitulatif : publier des bibliothèques de types
Une bibliothèque d’utilitaires de types utilise emitDeclarationOnly: true, exporte les types depuis src/index.ts, suit le versionnage sémantique, est testée avec tsd, documentée avec TSDoc et publiée sur npm ou dans un registre d’espace de travail.
Vérification rapide
Quelle option de tsconfig génère uniquement des fichiers .d.ts sans sortie JavaScript ?
Ce que vous avez appris
La publication d’une bibliothèque d’utilitaires de types nécessite emitDeclarationOnly, des champs appropriés dans package.json, des tests au niveau des types avec tsd, des commentaires TSDoc et le versionnage sémantique. Partagez vos utilitaires avec la communauté ou dans votre monodépôt.
Questions Fréquemment Posées
La leçon « Publier une bibliothèque d’utilitaires de types » est-elle gratuite ?
Oui — le texte complet de « Publier une bibliothèque d’utilitaires de types » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Publier une bibliothèque d’utilitaires de types » ?
Empaquetez et partagez des types utilitaires personnalisés sur npm Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer TypeScript Academy ?
Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Publier une bibliothèque d’utilitaires de types » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?
Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- DeepPartial et DeepReadonly
- Utilitaires Flatten et UnwrapPromise
- TupleToUnion et UnionToIntersection
- Publier une bibliothèque d’utilitaires de types