0Pricing
TypeScript Academy · Leçon

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 generated

Versionnage 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 changesets

Publication 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 restricted

Compatibilité 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

  1. DeepPartial et DeepReadonly
  2. Utilitaires Flatten et UnwrapPromise
  3. TupleToUnion et UnionToIntersection
  4. Publier une bibliothèque d’utilitaires de types
← Retour à TypeScript Academy