Bibliothèque / SDK
DefinitelyTyped/DefinitelyTyped avatar
DefinitelyTyped/DefinitelyTyped

Comment DefinitelyTyped construit et publie les paquets @types

DefinitelyTyped est le dépôt central de définitions de types .d.ts de qualité pour les paquets npm réellement utilisés par les développeurs TypeScript.

51 441 étoiles30 378 forksTypeScriptLa licence varie
GitHub

En bref

De quoi s’agit-il ?
Un regard sur le dépôt qui héberge les fichiers de déclaration TypeScript, ses règles de contribution, la fenêtre de support et le modèle de publication.
À qui s’adresse-t-il ?
DefinitelyTyped est un monorepo maintenu par la communauté qui publie des définitions TypeScript dans le scope @types sur npm, avec des directives de contribution strictes et un schéma de versionnement lié aux bibliothèques qu'il décrit.
Puis-je l’utiliser commercialement ?
À vérifier. La licence de ce dépôt n’entre pas dans les catégories que nous classons automatiquement : lisez son fichier LICENSE avant tout usage commercial.
Est-il encore maintenu ?
Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
En quel langage est-il écrit ?
Principalement TypeScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

À quoi sert DefinitelyTyped

DefinitelyTyped est un dépôt qui stocke des fichiers de déclaration TypeScript. Le README le qualifie de dépôt pour des définitions de types TypeScript de haute qualité, mais indique aussi que son objectif n'est pas de couvrir chaque paquet npm. Il cible plutôt les paquets réellement utilisés par les auteurs TypeScript. Les contributeurs doivent avoir l'intention d'utiliser ces types dans leurs propres projets ; les PR sans motivation d'utilisation concrète sont fermées. Le dépôt est récemment passé à un monorepo pnpm, ce qui a modifié la disposition des paquets.

Installer les paquets @types

Les définitions de types de ce dépôt sont publiées dans le scope @types sur npm. Pour un paquet npm foo, les typages se trouvent dans @types/foo. La méthode d'installation préférée est npm install --save-dev @types/node par exemple. Pour les paquets scopés, supprimez le @ et ajoutez un double underscore après le scope, donc @babel/preset-env devient @types/babel__preset-env. Le compilateur inclut généralement les types automatiquement ; si vous n'utilisez pas de modules, vous aurez peut-être besoin d'une référence triple slash comme /// <reference types="node" />. Le README renvoie au manuel TypeScript pour plus de détails.

Versions TypeScript prises en charge

DefinitelyTyped ne teste les paquets que sur des versions de TypeScript vieilles de moins de deux ans. Les paquets sur npm ont des dist-tags pour les anciennes versions de TypeScript, donc les utilisateurs de compilateurs plus anciens peuvent toujours récupérer des déclarations compatibles ; le README montre un exemple avec @types/react où TypeScript 2.5 utilise une version 15.0.1. Pour TypeScript 1.*, les définitions devaient être téléchargées manuellement depuis la branche master, et les anciens canaux de distribution Typings et NuGet sont obsolètes ou désactivés. La fenêtre de support actuelle est documentée dans une image de fenêtre de support dans le README.

Comment les contributions sont testées

Avant de soumettre une définition, les contributeurs sont invités à la tester contre du code réel. Le README suggère de créer un fichier de déclaration local et de remplir les exports, ou de modifier directement les types dans node_modules pour une validation rapide. Pour un nouveau paquet, vous pouvez définir baseUrl et typeRoots dans tsconfig.json, créer types/foo/index.d.ts, puis compiler et exécuter le code pour confirmer que les types correspondent au comportement à l'exécution. Une fois testé, les contributeurs forkent, clonent, exécutent pnpm install, puis créent une pull request. Le dépôt utilise un bot pour gérer en libre-service de nombreuses PR, et un diagramme de cycle de vie est lié.

Structure des paquets et contrôles de qualité

Chaque paquet @types a une structure requise : index.d.ts, un fichier <my-package>-tests.ts qui est seulement vérifié par le typage et non exécuté, tsconfig.json, .npmignore et package.json. Les tests utilisent dtslint, qui exécute le compilateur TypeScript sur les déclarations. dtslint inclut également des vérifications de format de module provenant de @arethetypeswrong/cli, comparant avec le paquet d'implémentation lorsqu'une version compatible avec la majeure SemVer existe sur npm. Certains paquets échouent à ces vérifications et sont listés dans attw.json ; les corriger les retire de la liste des échecs. tsconfig.json doit activer les options strictes, et esModuleInterop ou allowSyntheticDefaultImports ne sont pas autorisés.

Versionnement, propriété et licence

La branche master est automatiquement publiée dans le scope @types sur npm par DefinitelyTyped-tools. Les versions des paquets de déclaration utilisent le major.minor de la bibliothèque suivi de .9999 ; par exemple, @types/node 20.8.9999 correspond à la ligne 20.8.x. Les versions de patch sont incrémentées indépendamment. Les changements cassants sont publiés comme révisions de patch, sauf s'ils sont accompagnés d'un bump majeur ou mineur. Les propriétaires de définitions sont listés dans chaque package.json et sont synchronisés chaque semaine avec .github/CODEOWNERS. Le projet est sous licence MIT, les droits d'auteur sur chaque fichier de définition appartenant à leurs contributeurs respectifs. La licence permet une utilisation, une modification et une distribution libres, mais le logiciel est fourni tel quel, sans garantie.

Conclusion éditoriale

DefinitelyTyped est un monorepo maintenu par la communauté qui publie des définitions TypeScript dans le scope @types sur npm, avec des directives de contribution strictes et un schéma de versionnement lié aux bibliothèques qu'il décrit.

Sources officielles

  1. Official README
  2. Project repository
  3. Release notes
Notes de la communauté

Notes de la communauté