Éléments rest de tuples, types de curryfication
Utilisez les éléments rest de tuples pour capturer des listes d’arguments arbitraires et construisez de petits utilitaires de curryfication avec l’inférence des types.
Éléments rest de tuples, types de curryfication est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 1 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 : capturer des listes d’arguments avec des tuples variadiques et écrire un petit assistant d’application partielle utile. Ainsi, vos APIs restent flexibles et la sûreté des types est préservée.
Bases des tuples variadiques
Le motif [...A, L] : d’abord les arguments de tête (le tuple A), puis le dernier argument (L). C’est la base des assistants.
type HeadTail<A extends any[], L> = [...A, L]
function callWithLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R, last: L, ...head: A): R {
return fn(...head, last)
}
// Example
function join3(a: string, b: number, c: boolean) { return `${a}-${b}-${c}` }
const r = callWithLast(join3, true, "x", 42) // ok → stringAssistant d’application partielle
Un petit assistant d’application partielle : grâce à [...A, L], les types de la tête et du dernier argument sont corrects.
function curryLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R) {
return (last: L) => (...head: A) => fn(...head, last)
}
const curried = curryLast(join3)
const out = curried(true)("x", 42) // stringSolution générale curryFromFn
Solution générale : déduisez la fin et le dernier élément à partir de Parameters<F>, ce qui préserve le nombre de paramètres et leurs types.
type Fn = (...args: any[]) => any
type Tail<T extends any[]> = T extends [...infer H, any] ? H : never
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never
function curryFromFn<F extends Fn>(fn: F) {
type A = Tail<Parameters<F>>
type L = Last<Parameters<F>>
return (last: L) => (...head: A) => fn(...head, last)
}
const cur = curryFromFn(join3)
const o2 = cur(true)("x", 42) // still stringComposer avec des tuples
Faites circuler A → B → C avec la composition : les arguments du tuple A sont préservés et les types de sortie sont enchaînés.
function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): C => g(f(...args))
}
function len(a: string, b: number) { return `${a}${b}`.length }
function isEven(n: number) { return n % 2 === 0 }
const comp = compose(isEven, len)
const ok = comp("id", 99) // booleanConseils
Conseils :
Les tuples variadiques nécessitent TS 4.0 ou une version ultérieure ; gardez la cible à jour.
Guidez le compilateur : améliorez parfois l’inférence en écrivant explicitement les paramètres de type.
Une généralisation excessive ajoute de la complexité à la conception de l’interface de programmation ; les assistants simples sont les plus efficaces.
Vérification de la signature d’application partielle
Vérification rapide : Quelle signature capture tous les arguments A et le dernier argument L pour un assistant d’application partielle ?
Récapitulatif
Récapitulatif : modélisez les listes d’arguments avec [...A, L] ; écrivez de petits assistants d’application partielle et de composition ; les types sont préservés automatiquement.
Questions Fréquemment Posées
La leçon « Éléments rest de tuples, types de curryfication » est-elle gratuite ?
Oui — le texte complet de « Éléments rest de tuples, types de curryfication » 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 « Éléments rest de tuples, types de curryfication » ?
Utilisez les éléments rest de tuples pour capturer des listes d’arguments arbitraires et construisez de petits utilitaires de curryfication avec l’inférence 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 1 sur 3.
Combien de temps prend la leçon « Éléments rest de tuples, types de curryfication » ?
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