0Pricing
TypeScript Academy · Leçon

Motif Result : Ok et Err

Retournez les erreurs comme valeurs plutôt que de les lever

Motif Result : Ok et Err est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Bienvenue

Le modèle Result renvoie les erreurs sous forme de valeurs, ce qui permet une gestion des erreurs sûre du point de vue des types, sans try/catch.

Type Result

Définissez un type Result générique avec les variantes Ok et Err.
type Ok<T> = { ok: true; value: T };
type Err<E = Error> = { ok: false; error: E };
type Result<T, E = Error> = Ok<T> | Err<E>;

Constructeurs utilitaires

Créez les fonctions utilitaires ok() et err() pour obtenir un code plus clair.
const ok = <T>(value: T): Ok<T> => ({ ok: true, value });
const err = <E>(error: E): Err<E> => ({ ok: false, error });

Renvoyer des résultats

Renvoyez des Results depuis les fonctions au lieu de lever des exceptions.
async function fetchUser(id: number): Promise<Result<User>> {
  try {
    const user = await db.findUser(id);
    if (!user) return err(new Error('Not found'));
    return ok(user);
  } catch (e) { return err(e as Error); }
}

Consommer des résultats

Vérifiez l’indicateur ok avant d’utiliser la valeur.
const result = await fetchUser(1);
if (result.ok) {
  console.log(result.value.name); // User
} else {
  console.error(result.error.message);
}

Fonction utilitaire mapResult

Appliquez une transformation à un Result réussi pour transformer la valeur.
function mapResult<T, U, E>(r: Result<T, E>, fn: (v: T) => U): Result<U, E> {
  return r.ok ? ok(fn(r.value)) : r;
}

Fonction utilitaire flatMapResult

Chaînez de manière sûre les fonctions qui renvoient un Result.
function flatMap<T, U, E>(r: Result<T, E>, fn: (v: T) => Result<U, E>): Result<U, E> {
  return r.ok ? fn(r.value) : r;
}

Result et exceptions

Les exceptions sont implicites et non typées. Les Results sont des valeurs explicites dans la signature de type.

Prise en charge par les bibliothèques

Des bibliothèques comme neverthrow, true-myth et fp-ts fournissent des types Result prêts pour la production.

Result dans les gestionnaires d’API

Utilisez des Results dans les gestionnaires Express pour propager proprement les erreurs.
app.get('/users/:id', async (req, res) => {
  const result = await fetchUser(parseInt(req.params.id));
  if (result.ok) res.json(result.value);
  else res.status(404).json({ error: result.error.message });
});

Résultats asynchrones

Utilisez Promise> pour combiner l’asynchronisme avec le modèle Result.
type AsyncResult<T, E = Error> = Promise<Result<T, E>>;

Vérification rapide

Quel est le principal avantage du modèle Result par rapport au fait de lever des exceptions ?

Récapitulatif

Le modèle Result — Ok et Err : vous avez appris les concepts clés de ce sujet et leur mise en pratique dans de vrais projets TypeScript.

Questions Fréquemment Posées

La leçon « Motif Result : Ok et Err » est-elle gratuite ?

Oui — le texte complet de « Motif Result : Ok et Err » 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 « Motif Result : Ok et Err » ?

Retournez les erreurs comme valeurs plutôt que de les lever 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 2 sur 4.

Combien de temps prend la leçon « Motif Result : Ok et Err » ?

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. Classes et hiérarchies d’erreurs typées
  2. Motif Result : Ok et Err
  3. Affiner les erreurs interceptées (unknown ou Error)
  4. Gestion des erreurs dans le code TypeScript asynchrone
← Retour à TypeScript Academy