Kombinera funktioner och argument på ett säkert sätt
Kombinera funktioner och bevara argumenttupler och returtyper. Skriv pipe-/compose-hjälpfunktioner som förblir typsäkra.
Kombinera funktioner och argument på ett säkert sätt är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 2 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 3 lektioner.
Introduktion
Mål: Komponera funktioner utan att förlora information om argumenten. Variadiska tupler låter dig bevara hela argumenttupeln genom pipe- och compose-hjälpfunktioner.
- Bevara aritet och namn
- Behåll inferensen genom alla steg
- Inget
any, inga typomvandlingar
Grundläggande compose
compose: Den första funktionen tar alla argument (...args: A), den andra tar emot dess resultat; aritet och typer bevaras.
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) // booleanPipe-hjälpfunktion
pipe implementerar samma idé i omvänd ordning; inferensflödet blir mer intuitivt.
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) // booleanCompose med 3 eller fler
Tre eller fler funktioner: samma mönster upprepas; tupeln A bevaras och mellanliggande returvärden kedjas ihop.
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"Bind head
bindHead: Förifyll alla argument och skapa en funktion utan argument; endast för demonstration (den kan faktiskt göras mer flexibel med 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() // numberTips
Tips:
Undvik any i hjälpfunktioner; det bryter inferenskedjan.
Gör vid behov returtypen explicit; det förbättrar utvecklarupplevelsen.
För komposition i flera steg bör du välja små hjälpfunktioner i stället för alltför generiska.
Kontroll av compose-signatur
Snabb kontroll: Vilken compose-signatur bevarar källans argument-tupel?
Sammanfattning
Sammanfattning: Du skrev compose/pipe och bevarade argumenten med variadiska tupler; flödet är etablerat utan att aritet eller typer går förlorade.
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 101
- Lektioner
- 352
Vanliga frågor
Är lektionen ”Kombinera funktioner och argument på ett säkert sätt” gratis?
Ja – hela texten till ”Kombinera funktioner och argument på ett säkert sätt” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”Kombinera funktioner och argument på ett säkert sätt”?
Kombinera funktioner och bevara argumenttupler och returtyper. Skriv pipe-/compose-hjälpfunktioner som förblir typsäkra. Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?
Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 3.
Hur lång tid tar lektionen ”Kombinera funktioner och argument på ett säkert sätt”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?
Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Rest-element i tupler och curry-typer
- Kombinera funktioner och argument på ett säkert sätt
- Starkt typade byggare