Currification et application partielle
Transformer des fonctions à plusieurs arguments en formes curryfiées.
Currification et application partielle 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.
Qu’est-ce que la currification ?
La currification transforme une fonction à plusieurs arguments en une chaîne de fonctions à un seul argument. Au lieu d’appeler f(a, b), vous appelez f(a)(b).
L’exemple classique
Ici, add prend un nombre et renvoie une fonction qui attend le suivant. TypeScript déduit automatiquement les types des fonctions imbriquées.
const add = (a: number) => (b: number) => a + b;
console.log(add(2)(3)); // 5Typer une fonction curryfiée
Le type explicite montre clairement la chaîne : une fonction qui renvoie une fonction. Chaque flèche correspond à un argument.
type Add = (a: number) => (b: number) => number;
const add: Add = a => b => a + b;
console.log(add(10)(5)); // 15Application partielle
L’application partielle fixe certains arguments maintenant et fournit les autres plus tard. Avec une fonction curryfiée, il suffit de l’appeler en moins d’étapes.
const add = (a: number) => (b: number) => a + b;
const add10 = add(10); // partially applied
console.log(add10(1), add10(2)); // 11 12Pourquoi l’application partielle est utile
Vous pouvez créer des fonctions spécialisées à partir de fonctions générales. add10 est un outil réutilisable et nommé, dérivé de la fonction générique add, qui améliore la lisibilité et la réutilisation.
Currifier trois arguments
Le modèle s’étend à n’importe quelle arité. Chaque niveau capture un argument dans une fermeture jusqu’à ce que la valeur finale soit produite.
const clamp = (min: number) => (max: number) => (x: number) =>
Math.min(Math.max(x, min), max);
const toByte = clamp(0)(255);
console.log(toByte(300), toByte(-5)); // 255 0Idéal pour map et le filtrage
Les fonctions curryfiées s’intègrent naturellement aux méthodes de tableau, car map attend une fonction à un argument. L’application partielle produit précisément ce type de fonction.
const mul = (a: number) => (b: number) => a * b;
const triple = mul(3);
console.log([1, 2, 3].map(triple)); // [3, 6, 9]Un assistant générique de currification
Vous pouvez écrire un assistant typé qui curryfie une fonction à deux arguments. Les génériques conservent la précision des types des paramètres et de la valeur de retour.
function curry2<A, B, R>(f: (a: A, b: B) => R) {
return (a: A) => (b: B) => f(a, b);
}
const join = curry2((a: string, b: string) => a + b);
console.log(join("foo")("bar")); // foobarLes fermetures capturent les arguments
La currification fonctionne parce que chaque fonction renvoyée conserve une fermeture sur les arguments précédents. Ces valeurs restent disponibles jusqu’à ce que l’appel final les utilise.
const greet = (greeting: string) => (name: string) =>
greeting + ", " + name;
const hi = greet("Hi");
console.log(hi("Sam")); // Hi, SamQuand ne pas utiliser la currification
Currifier chaque fonction peut nuire à la lisibilité. Utilisez cette technique lorsque l’application partielle est réellement utile, par exemple pour configurer des assistants réutilisables ou assembler des chaînes de traitement.
Currification ou paramètres par défaut
Les paramètres par défaut fournissent des valeurs par défaut, mais pas une application par étapes. La currification offre une véritable application partielle en renvoyant une fonction réelle que vous pouvez transmettre et réutiliser.
Vérification rapide
Vérification rapide de cette leçon.
Récapitulatif
La currification transforme f(a, b) en f(a)(b), une chaîne de fonctions à un seul argument typées comme des flèches imbriquées. L’application partielle fixe ensuite les arguments initiaux pour créer des fonctions spécialisées réutilisables, grâce aux fermetures.
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 « Currification et application partielle » est-elle gratuite ?
Oui — le texte complet de « Currification et application partielle » 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 « Currification et application partielle » ?
Transformer des fonctions à plusieurs arguments en formes curryfiées. 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 « Currification et application partielle » ?
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
- Fonctions pures et immuabilité
- Currification et application partielle
- Composition de fonctions avec les types
- Utilitaires pipe et flow typés