TypeScript Academy · Leçon

Gérer les bibliothèques tierces non typées

Utilisez les paquets @types et écrivez des déclarations manuelles

Leçon 4 sur 413 étapes

Gérer les bibliothèques tierces non typées 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.

Le problème : des types manquants

Certains paquets npm ne fournissent pas de déclarations TypeScript et ne disposent d'aucun paquet @types/. Par défaut, TypeScript les traite comme any, ce qui supprime la sécurité des types à la frontière.

import legacyLib from "untyped-lib"; // legacyLib: any

Paquets @types

Le projet DefinitelyTyped fournit des déclarations de types gérées par la communauté pour des milliers de bibliothèques. Recherchez @types/library-name sur npm.

npm install --save-dev @types/lodash
npm install --save-dev @types/express
# Now lodash and express have full TypeScript types

Écrire un fichier de déclaration (.d.ts)

S'il n'existe aucun paquet @types, écrivez dans votre projet un fichier de déclaration minimal pour déclarer le module et ses types.

// src/types/untyped-lib.d.ts
declare module "untyped-lib" {
  export function doSomething(x: string): number;
  export const version: string;
}

Extension de module

Étendez les types tiers existants en ajoutant vos propres déclarations à un module existant, sans le dupliquer.

// Extend Express Request with a custom property
declare namespace Express {
  interface Request {
    user?: AuthUser;
  }
}

Déclarations de modules génériques

Pour des catégories entières d'importations sans types, comme les fichiers de ressources, utilisez des déclarations de modules génériques.

// src/types/assets.d.ts
declare module "*.svg" {
  const content: string;
  export default content;
}
declare module "*.json" {
  const value: Record<string, unknown>;
  export default value;
}

noImplicitAny et bibliothèques sans types

Avec noImplicitAny: true, l'importation d'un module sans types provoque une erreur de compilation. Utilisez un fichier de déclaration ou désactivez noImplicitAny pour un fichier avec // @ts-ignore.

// Quick fix for a single untyped import:
// @ts-ignore
import untypedLib from "untyped-lib";

Contribuer à DefinitelyTyped

Si vous écrivez des types de grande qualité pour une bibliothèque sans types, soumettez-les à DefinitelyTyped afin d'aider la communauté.

# Fork DefinitelyTyped and add:
# types/your-library/index.d.ts
# types/your-library/package.json
# Submit a PR at github.com/DefinitelyTyped/DefinitelyTyped

Utiliser any en dernier recours

Lorsque vous ne pouvez pas obtenir rapidement les types nécessaires, utilisez any explicitement avec un commentaire indiquant la dette à traiter. C'est préférable à un any implicite, car l'intention est visible.

// eslint-disable-next-line @typescript-eslint/no-explicit-any
const lib: any = require("untyped-lib"); // TODO: add types

skipLibCheck pour les erreurs de déclaration

Si un fichier .d.ts tiers contient des erreurs internes, skipLibCheck: true les fait taire sans affecter votre propre vérification des types.

{
  "compilerOptions": {
    "skipLibCheck": true
  }
}

Enveloppes de types pour les bibliothèques dangereuses

Écrivez un module enveloppe typé autour d'une bibliothèque sans types afin de contenir le any et d'exposer une API typée sûre au reste de votre base de code.

// src/lib/safe-legacy.ts
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const raw: any = require("untyped-lib");
export function doSomething(x: string): number { return raw.doSomething(x); }

Récapitulatif : bibliothèques sans types

Pour gérer les bibliothèques sans types, vérifiez d'abord les paquets @types/, écrivez des fichiers de déclaration minimaux, utilisez l'extension de module, créez des enveloppes typées et utilisez skipLibCheck pour les erreurs de déclaration dans les dépendances.

Vérification rapide

Quel est le premier endroit où chercher des déclarations de types pour un paquet npm sans types ?

Ce que vous avez appris

Bibliothèques sans types : vérifiez les paquets @types/, écrivez des fichiers de déclaration, étendez les types existants, utilisez des déclarations de modules génériques, enveloppez les bibliothèques dangereuses dans des façades typées et utilisez skipLibCheck pour les erreurs des dépendances.

Gratuit pour commencer

Apprends TypeScript avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
101
Leçons
352

Questions Fréquemment Posées

La leçon « Gérer les bibliothèques tierces non typées » est-elle gratuite ?

Oui — le texte complet de « Gérer les bibliothèques tierces non typées » 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 « Gérer les bibliothèques tierces non typées » ?

Utilisez les paquets @types et écrivez des déclarations manuelles 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 « Gérer les bibliothèques tierces non typées » ?

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. Commencer la migration : allowJs et checkJs
  2. Annotations de types JSDoc comme passerelle
  3. Stratégie de conversion fichier par fichier
  4. Gérer les bibliothèques tierces non typées
← Retour à TypeScript Academy