declare en TypeScript : pourquoi et comment l'utiliser

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi TypeScript a-t-il besoin du mot-clé declare ?

\n

Imaginez que vous construisez une maison, mais que certaines pièces existent déjà — elles ont été construites par quelqu'un d'autre (par exemple, une bibliothèque JavaScript). Vous ne pouvez pas entrer et refaire les murs, mais vous devez connaître leur agencement pour bien placer les meubles. C'est exactement le rôle du mot-clé declare en TypeScript.

\n\n

Si vous avez déjà travaillé avec des bibliothèques populaires (jQuery, Lodash, D3.js), vous avez sûrement rencontré des fichiers .d.ts — ce sont les "plans" créés avec declare. Dans cet article, nous allons voir ce qu'est declare, pourquoi il est utile et comment l'utiliser en pratique. Préparez-vous — il y aura beaucoup de code et peu de blabla.

\n\n

Qu'est-ce que declare en TypeScript ?

\n

declare est un mot-clé qui indique au compilateur TypeScript : "Hé, cette chose (variable, fonction, classe ou module) existe, mais elle est définie ailleurs. Fais-moi confiance et laisse-moi l'utiliser dans le code."

\n\n

Il est important de comprendre : declare ne génère aucun code JavaScript. C'est une construction purement informative pour le compilateur. Si vous écrivez declare const x: number = 5, après compilation, x disparaîtra — il ne sera pas dans le fichier final.

\n\n

Quand l'utiliser ?

\n
    \n
  • Travailler avec des variables globales — par exemple, window, document ou des variables ajoutées via un CDN.
  • \n
  • Typer des bibliothèques JavaScript — quand une bibliothèque est écrite en JS pur, mais que vous voulez l'utiliser avec TypeScript.
  • \n
  • Créer des types pour des fichiers de configuration — modules CSS, images, fichiers JSON.
  • \n
\n\n

Syntaxe de declare : exemples de base

\n\n

1. Déclaration de variables

\n

Supposons que vous ayez une variable globale VERSION, définie dans un fichier HTML via <script>. TypeScript n'en sait rien, vous écrivez donc :

\n
declare const VERSION: string;\n\nconsole.log(VERSION); // OK, TypeScript sait que c'est une chaîne\n
\n

Après compilation, declare const VERSION: string disparaît, mais console.log(VERSION) reste.

\n\n

2. Déclaration de fonctions

\n

Imaginez une fonction globale trackEvent provenant d'un outil d'analyse :

\n
declare function trackEvent(eventName: string, properties?: Record<string, any>): void;\n\n// Utilisation\ntrackEvent("button_click", { buttonId: "submit" });\n
\n

Le compilateur ne vérifie pas l'implémentation — il connaît simplement la signature.

\n\n

3. Déclaration de classes

\n

Une bibliothèque fournit une classe Moment dans l'espace de noms global :

\n
declare class Moment {\n    constructor(date: string);\n    format(pattern: string): string;\n}\n\n// Utilisation\nconst now = new Moment("2024-01-01");\nconsole.log(now.format("YYYY-MM-DD"));\n
\n\n

4. Déclaration de modules

\n

C'est le scénario le plus courant. Par exemple, avec des modules CSS ou des fichiers JSON :

\n
// styles.d.ts\ndeclare module "*.css" {\n    const styles: Record<string, string>;\n    export default styles;\n}\n\n// images.d.ts\ndeclare module "*.png" {\n    const src: string;\n    export default src;\n}\n
\n

Vous pouvez maintenant importer des CSS et des images sans erreur TypeScript.

\n\n

declare et les fichiers .d.ts

\n

Les fichiers avec l'extension .d.ts (déclarations de types) sont le "territoire" du mot-clé declare. Ils contiennent uniquement des déclarations et ne sont pas compilés en JavaScript. Ils se trouvent généralement dans un dossier types/ ou sont fournis avec la bibliothèque (par exemple, @types/lodash).

\n\n

Exemple : créer des types pour jQuery

\n

Blogs

Book Recommendations