TypeScript Academy · Leçon

Addition et soustraction au niveau des types

Construire des opérations arithmétiques à partir de la manipulation de tuples.

Leçon 2 sur 413 étapes

Addition et soustraction au niveau des types 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.

Arithmétique par longueur

Avec la représentation par longueur de tuple, l'addition devient une concaténation et la soustraction, une suppression de préfixe. Vous effectuez le calcul sur les tuples, puis lisez la longueur obtenue.

type BuildTuple<N extends number, Acc extends unknown[] = []> =
  Acc["length"] extends N ? Acc : BuildTuple<N, [...Acc, unknown]>;

Addition

Pour additionner A + B : construisez un tuple de longueur A, construisez-en un autre de longueur B, étalez les deux dans un nouveau tuple, puis lisez sa longueur.

type Add<A extends number, B extends number> =
  [...BuildTuple<A>, ...BuildTuple<B>]["length"];

type S = Add<3, 4>; // 7

Pourquoi la concaténation produit une addition

Un tuple de longueur 3 suivi d'un tuple de longueur 4 donne un tuple de longueur 7. Réunir les marques de deux décomptes donne un décompte combiné : les longueurs s'additionnent donc.

type A = Add<2, 2>; // 4
type B = Add<0, 5>; // 5
type C = Add<1, 6>; // 7

Soustraction par préfixe

Pour calculer A - B : construisez un tuple de longueur A, puis inférez-le comme un préfixe de longueur B suivi du reste. Le rest a une longueur égale à A - B.

type Sub<A extends number, B extends number> =
  BuildTuple<A> extends [...BuildTuple<B>, ...infer Rest]
    ? Rest["length"]
    : never;

type D = Sub<7, 4>; // 3

Soustraction pas à pas

Pour Sub<7, 4> : construisez un tuple de longueur 7, faites correspondre un préfixe de longueur 4, capturez Rest (de longueur 3), puis lisez sa longueur. Le préfixe supprimé correspond exactement aux marques de B.

type A = Sub<5, 2>; // 3
type B = Sub<4, 4>; // 0

Le dépassement inférieur renvoie le type jamais

Les nombres au niveau des types sont positifs ou nuls. Si B > A, aucun préfixe valide n'existe, le motif échoue et le résultat est never. Vous pouvez le remplacer par 0 si vous le préférez.

type A = Sub<2, 5>; // never

type SubSafe<A extends number, B extends number> =
  [Sub<A, B>] extends [never] ? 0 : Sub<A, B>;
type B = SubSafe<2, 5>; // 0

Incrémentation et décrémentation

Les cas particuliers de l'addition et de la soustraction de un sont assez courants pour mériter un nom. Inc ajoute un élément ; Dec en supprime un.

type Inc<N extends number> = [...BuildTuple<N>, unknown]["length"];
type Dec<N extends number> =
  BuildTuple<N> extends [unknown, ...infer R] ? R["length"] : 0;

type A = Inc<4>; // 5
type B = Dec<4>; // 3

Multiplication par répétition

La multiplication est une addition répétée. Ajoutez B à un accumulateur A fois en comptant à rebours avec Dec et en accumulant avec Add.

type Mul<A extends number, B extends number, Acc extends number = 0> =
  A extends 0 ? Acc : Mul<Dec<A>, B, Add<Acc, B>>;

type A = Mul<3, 4>; // 12

L'utilitaire BuildTuple

Toutes les opérations présentées ici dépendent de BuildTuple. Il s'agit de l'unique primitive réutilisable : fournissez-lui un nombre et obtenez un tuple de cette longueur. Gardez-la au même endroit et construisez le reste par-dessus.

type Five = BuildTuple<5>; // [unknown, unknown, unknown, unknown, unknown]
type N = Five["length"];   // 5

Composer des opérations

Comme chaque opération prend un nombre en entrée et renvoie un nombre, vous pouvez les composer librement. Vous pouvez écrire des expressions comme Add<Mul<2, 3>, 4>, que le compilateur évalue.

type Result = Add<Mul<2, 3>, 4>; // 10

Précautions pratiques

Ces astuces sont excellentes pour les petites quantités : indices de tableaux, tailles fixes, plages bornées. Pour les grands nombres ou les mathématiques générales, la limite de récursion et l'absence de nombres négatifs les rendent impraticables. Utilisez-les lorsque les valeurs restent petites et statiques.

type A = Add<8, 7>;  // 15 (fine)
// Add<5000, 5000> would exceed recursion limits

Vérification rapide

Vérifiez votre compréhension de l'arithmétique au niveau des types.

Récapitulatif

Vous avez implémenté l'arithmétique dans le système de types.

  • Add : concaténer des tuples, puis lire leur longueur.
  • Sub : inférer un préfixe, puis lire la longueur du reste.
  • Inc/Dec sont les versions en une seule étape.
  • BuildTuple est la primitive commune.

Ensuite : comparer les nombres au niveau des types.

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 « Addition et soustraction au niveau des types » est-elle gratuite ?

Oui — le texte complet de « Addition et soustraction au niveau des types » 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 « Addition et soustraction au niveau des types » ?

Construire des opérations arithmétiques à partir de la manipulation de tuples. 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 « Addition et soustraction au niveau des types » ?

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. Compter avec la longueur des tuples
  2. Addition et soustraction au niveau des types
  3. Comparaisons au niveau des types
  4. Utilitaires pratiques pour les types numériques
← Retour à TypeScript Academy