TypeScript et les fichiers : du débutant au pro en 15 minutes

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 travailler avec des fichiers en TypeScript n'est pas effrayant, mais pratique

\n\n

Quand j'ai commencé à écrire en TypeScript, l'idée me faisait peur : « Et les fichiers ? Dans le navigateur, c'est simple, mais ici — serveur, disques, chemins... ». Mais il s'est avéré que travailler avec des fichiers et le système de fichiers en TypeScript est comme assembler un jeu LEGO : il y a des pièces claires (les modules fs et path), une notice (le typage), et le résultat est prévisible. Pas de surprises, seulement du code propre.

\n\n

Dans cet article, nous allons voir comment lire, écrire, renommer et supprimer des fichiers en utilisant le TypeScript moderne pour Node.js. Vous apprendrez pourquoi il faut utiliser fs/promises plutôt que le bon vieux fs, comment ne pas se perdre dans les chemins et comment gérer les erreurs avec élégance. C'est parti !

\n\n

Préparation : ce qu'il faut savoir avant de commencer

\n\n

Avant de plonger dans le code, assurez-vous d'avoir Node.js installé (version 14+ — elle inclut déjà les promesses natives). Créez également un projet simple :

\n\n
mkdir ts-files-demo\ncd ts-files-demo\nnpm init -y\nnpm install typescript @types/node --save-dev\nnpx tsc --init
\n\n

Dans le fichier tsconfig.json, assurez-vous d'activer "module": "NodeNext" ou "ESNext" et "target": "ES2022". Vous êtes maintenant prêt pour travailler avec le système de fichiers TypeScript.

\n\n

Les imports qui vous serviront toujours

\n\n

La meilleure façon d'importer les modules pour travailler avec les fichiers aujourd'hui est :

\n\n
import { readFile, writeFile, unlink, mkdir, access } from 'fs/promises';\nimport { join, dirname, basename, extname } from 'path';\nimport { fileURLToPath } from 'url';
\n\n

Remarquez : nous n'utilisons pas fs avec des callbacks. Seulement fs/promises — c'est la norme moderne, qui se marie parfaitement avec async/await et le typage TypeScript.

\n\n

Lecture d'un fichier : du simple au sécurisé

\n\n

Commençons par le classique — lisons un fichier texte. Supposons que nous ayons un fichier data.txt avec un contenu quelconque.

\n\n
import { readFile } from 'fs/promises';\n\nasync function readTextFile(filePath: string): Promise<string> {\n  try {\n    const content = await readFile(filePath, 'utf-8');\n    return content;\n  } catch (error) {\n    console.error('Erreur lors de la lecture du fichier :', error);\n    throw error;\n  }\n}\n\n// Utilisation\nconst data = await readTextFile('./data.txt');\nconsole.log(data);
\n\n

Simple, non ? Mais dans les projets réels, nous travaillons souvent avec du JSON. Créons une fonction universelle avec un générique :

\n\n
import { readFile } from 'fs/promises';\n\nasync function readJsonFile<T>(filePath: string): Promise<T> {\n  const raw = await readFile(filePath, 'utf-8');\n  return JSON.parse(raw) as T;\n}\n\n// Exemple : lire une configuration\ninterface Config {\n  port: number;\n  dbUrl: string;\n}\n\nconst config = await readJsonFile<Config>('./config.json');\nconsole.log(config.port); // type number — TypeScript le suggère
\n\n

C'est ce qu'on appelle travailler avec des fichiers TypeScript dans sa meilleure forme : le typage vous protège des erreurs stupides, et le code reste lisible.

\n\n

Écrire dans un fichier : créer et mettre à jour des données

\n\n

Apprenons maintenant à enregistrer des informations. La fonction writeFile écrase le fichier s'il existe, ou en crée un nouveau.

\n\n
import { writeFile, mkdir } from 'fs/promises';\nimport { dirname } from 'path';\n\nasync function saveToFile(filePath: string, data: string): Promise<void> {\n  // D'abord, assurons-nous que le dossier existe\n  const dir = dirname(filePath);\n  await mkdir(dir, { recursive: true });\n\n  // Maintenant, écrivons\n  await writeFile(filePath, data, 'utf-8');\n  console.log(`Fichier ${filePath} enregistré avec succès`);\n}\n\n// Enregistrer un objet en JSON\nconst user = { name: 'Anna', age: 28, role: 'admin' };\n                

Blogs

Book Recommendations