Composer des fonctions et des arguments en toute sécurité
Composez des fonctions en préservant les tuples d’arguments et les types de retour ; écrivez des utilitaires pipe/compose qui restent sûrs du point de vue des types.
Composer des fonctions et des arguments en toute sécurité est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 3. 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 3 leçons au total.
Introduction
Objectif : composer des fonctions sans perdre les informations sur les arguments. Les tuples variadiques permettent de conserver le tuple complet des arguments dans les assistants pipe et de composition.
- Préserver l’arité et les noms
- Conserver l’inférence entre les étapes
- Ni
any, nicasts
Composition de base
Composition : la première fonction reçoit tous les arguments (...args: A), et la seconde consomme sa sortie ; l’arité et les types sont préservés.
function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): C => g(f(...args))
}
function toLen(a: string, n: number) { return `${a}${n}`.length }
function isEven(x: number) { return x % 2 === 0 }
const c1 = compose(isEven, toLen)
const ok = c1("id", 99) // booleanAssistant pipe
pipe applique la même idée dans l’ordre inverse ; le flux d’inférence est plus intuitif.
function pipe<A extends any[], B, C>(f: (...args: A) => B, g: (b: B) => C) {
return (...args: A): C => g(f(...args))
}
const p1 = pipe(toLen, isEven)
const ok2 = p1("xx", 7) // booleanComposition de 3 fonctions ou plus
Pour 3 fonctions ou plus : le même motif est répété ; le tuple A est préservé et les valeurs de retour intermédiaires sont enchaînées.
function compose3<A extends any[], B, C, D>(h: (c: C) => D, g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): D => h(g(f(...args)))
}
function toUpper(s: string) { return s.toUpperCase() }
const c3 = compose3(toUpper, (x: number) => x.toString(), toLen)
const val = c3("a", 5) // "2" → then upper → "2"Lier la tête
bindHead : préfixez les arguments complets et générez une fonction sans argument ; uniquement pour la démonstration (en réalité, elle peut être rendue plus flexible avec Parameters).
function bindHead<A extends any[], B>(fn: (...args: A) => B, ...head: A) {
return (...rest: []): B => fn(...head)
}
const bh = bindHead(toLen, "x", 42)
const r = bh() // numberConseils
Conseils :
Évitez any dans les assistants ; cela brise la chaîne d’inférence.
Si nécessaire, explicitez le type de retour ; cela améliore l’expérience de développement.
Pour une composition en plusieurs étapes, choisissez de petits assistants plutôt que des assistants trop génériques.
Vérification de la signature de composition
Vérification rapide : Quelle signature de composition préserve le tuple d’arguments source ?
Récapitulatif
Récapitulatif : vous avez écrit des assistants de composition et pipe tout en préservant les arguments avec des tuples variadiques ; le flux est établi sans perdre l’arité ni les types.
Questions Fréquemment Posées
La leçon « Composer des fonctions et des arguments en toute sécurité » est-elle gratuite ?
Oui — le texte complet de « Composer des fonctions et des arguments en toute sécurité » 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 3 leçons au total.
Qu'est-ce que j'apprendrai dans « Composer des fonctions et des arguments en toute sécurité » ?
Composez des fonctions en préservant les tuples d’arguments et les types de retour ; écrivez des utilitaires pipe/compose qui restent sûrs du point de vue des types. 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 3.
Combien de temps prend la leçon « Composer des fonctions et des arguments en toute sécurité » ?
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
- Éléments rest de tuples, types de curryfication
- Composer des fonctions et des arguments en toute sécurité
- Constructeurs fortement typés