TypeScript Academy · Lektion

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.

Lektion 2 av 38 steg

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)   // boolean

Pipe-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) // boolean

Compose 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() // number

Tips

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.

Gratis att börja

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

  1. Rest-element i tupler och curry-typer
  2. Kombinera funktioner och argument på ett säkert sätt
  3. Starkt typade byggare
← Tillbaka till TypeScript Academy