Pourquoi les systèmes d’effets sont importants
Rendre les effets secondaires et les échecs explicites et composables.
Pourquoi les systèmes d’effets sont importants est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
Pourquoi les systèmes d’effets sont importants
Un système d’effets rend les effets de bord, les échecs et les dépendances explicites et composables dans le système de types. Au lieu de throw dissimulés et d’entrées-sorties ambiantes, chaque effet est une valeur que vous pouvez transmettre, transformer et combiner.
Problèmes liés à async/throw bruts
Un simple async/await avec throw dissimule des informations essentielles : la signature de la fonction n’indique ni les erreurs qu’elle peut lever ni les ressources dont elle a besoin.
async function getUser(id: number): Promise<User> {
// may throw NotFoundError, may throw NetworkError
// needs a database connection from... somewhere
// none of this is in the type
return await db.users.find(id);
}Les erreurs sont invisibles
Promise<User> ne vous apprend rien sur les modes d’échec. Les appelants ne savent pas quelles erreurs gérer ; ils interceptent donc trop d’erreurs ou oublient complètement certains cas.
Les dépendances sont implicites
La fonction ci-dessus dépend silencieusement d’une base de données. Cette dépendance est récupérée depuis un élément global ou une importation, ce qui complique les tests et la substitution, tout en masquant le véritable contrat.
Qu’est-ce qu’une valeur d’effet
Un effet est une description d’un calcul, et non le calcul lui-même. Sa construction ne fait rien ; vous l’exécutez plus tard. Les effets deviennent ainsi des valeurs pures que vous pouvez composer comme des données.
import { Effect } from "effect";
// A description: produces number, no errors, no requirements
const program = Effect.succeed(42);
// Nothing has run yet.Échecs explicites
Les effets portent leurs erreurs possibles dans leur type, de sorte que le compilateur vous oblige à les gérer ou à les propager délibérément.
import { Effect } from "effect";
const risky = Effect.fail(new Error("boom"));
// type encodes that this can fail with ErrorDépendances explicites
Les effets suivent également les services requis dans leur type. Un calcul qui a besoin d’une Database l’indique, et ne peut pas s’exécuter tant qu’une telle instance n’est pas fournie.
Composabilité
Comme les effets sont des valeurs, vous les combinez avec des opérateurs (map, flatMap, zip), comme vous le feriez avec des tableaux ou des promesses, mais les canaux d’erreurs et de dépendances sont automatiquement conservés.
Exécution différée
Rien ne se passe tant que vous n’exécutez pas explicitement l’effet (par exemple avec Effect.runPromise). Cette séparation entre description et exécution permet les nouvelles tentatives, l’interruption et les tests sans redéclencher les effets de bord.
import { Effect } from "effect";
const program = Effect.succeed(1);
// Run at the edge of your app:
// const result = await Effect.runPromise(program);Comparaison avec les promesses
Une Promise est impatiente (elle s’exécute immédiatement), non typée pour les erreurs et aveugle aux dépendances. Un Effect est paresseux, ses erreurs sont typées et ses dépendances sont prises en compte : il fournit donc strictement plus d’informations.
Pourquoi est-ce important
Rendre les effets, les erreurs et les dépendances explicites permet au compilateur d’imposer une gestion correcte, rend le code testable grâce au remplacement des dépendances et permet de composer de manière fiable des flux asynchrones complexes, ce qui motive des bibliothèques comme Effect-TS.
Vérification rapide
Vérifiez votre compréhension de l’importance des systèmes d’effets.
Récapitulatif
Les systèmes d’effets rendent les effets de bord, les échecs et les dépendances explicites. Contrairement aux promesses impatientes, aveugles aux erreurs et dissimulant les dépendances, un effet est une description paresseuse et composable d’un calcul dont le type contient les informations relatives à la réussite, à l’erreur et aux exigences, ce qui permet une composition fiable et la testabilité.
Questions Fréquemment Posées
La leçon « Pourquoi les systèmes d’effets sont importants » est-elle gratuite ?
Oui — le texte complet de « Pourquoi les systèmes d’effets sont importants » 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 « Pourquoi les systèmes d’effets sont importants » ?
Rendre les effets secondaires et les échecs explicites et composables. 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 1 sur 4.
Combien de temps prend la leçon « Pourquoi les systèmes d’effets sont importants » ?
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
- Pourquoi les systèmes d’effets sont importants
- Le type Effect
- Composer des effets
- Canaux d’erreur et dépendances