Addition et soustraction au niveau des types
Construire des opérations arithmétiques à partir de la manipulation de tuples.
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>; // 7Pourquoi 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>; // 7Soustraction 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>; // 3Soustraction 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>; // 0Le 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>; // 0Incré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>; // 3Multiplication 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>; // 12L'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"]; // 5Composer 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>; // 10Pré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 limitsVé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/Decsont les versions en une seule étape.BuildTupleest la primitive commune.
Ensuite : comparer les nombres au niveau des types.
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
- Compter avec la longueur des tuples
- Addition et soustraction au niveau des types
- Comparaisons au niveau des types
- Utilitaires pratiques pour les types numériques