0Pricing
TypeScript Academy · Lekcja

Bezpieczne komponowanie funkcji i argumentów

Komponowanie funkcji z zachowaniem krotek argumentów i typów zwracanych oraz pisanie bezpiecznych typowo funkcji pipe/compose

Bezpieczne komponowanie funkcji i argumentów to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 3 lekcji w sumie.

Wprowadzenie

Cel: Komponowanie funkcji bez utraty informacji o argumentach. Krotki wariadyczne pozwalają zachować pełną krotkę argumentów w funkcjach pomocniczych pipe/compose.

  • Zachowanie liczby i nazw argumentów
  • Utrzymanie wnioskowania typów na kolejnych etapach
  • Brak any i rzutowań

Podstawowe compose

compose: Pierwsza funkcja przyjmuje wszystkie argumenty (...args: A), a druga przetwarza jej wynik; liczba argumentów i typy zostają zachowane.

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

Funkcja pomocnicza pipe

pipe realizuje tę samą ideę w odwrotnej kolejności; przepływ wnioskowania typów jest bardziej intuicyjny.

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 3+

W przypadku 3 lub większej liczby funkcji powtarza się ten sam wzorzec: krotka A zostaje zachowana, a pośrednie wartości zwracane są łączone.

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"

Wiązanie początkowych argumentów

bindHead: Przypisuje pełną listę argumentów początkowych i generuje funkcję bez argumentów; służy wyłącznie do demonstracji (w rzeczywistości można ją uelastycznić za pomocą 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

Wskazówki

Wskazówki:

Należy unikać any w funkcjach pomocniczych, ponieważ przerywa łańcuch wnioskowania.

W razie potrzeby warto jawnie określić typ zwracany; poprawia to ergonomię pracy dewelopera.

W przypadku wieloetapowego komponowania lepiej wybierać małe funkcje pomocnicze niż nadmiernie ogólne rozwiązania.

Sprawdzenie sygnatury compose

Szybkie sprawdzenie: Która sygnatura compose zachowuje źródłową krotkę argumentów?

Podsumowanie

Podsumowanie: Funkcje compose/pipe pozwalają zachować argumenty za pomocą krotek wariadycznych; łańcuch jest tworzony bez utraty liczby argumentów i typów.

Często zadawane pytania

Czy lekcja „Bezpieczne komponowanie funkcji i argumentów” jest bezpłatna?

Tak — pełny tekst „Bezpieczne komponowanie funkcji i argumentów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Bezpieczne komponowanie funkcji i argumentów”?

Komponowanie funkcji z zachowaniem krotek argumentów i typów zwracanych oraz pisanie bezpiecznych typowo funkcji pipe/compose Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?

Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.

Ile czasu zajmuje lekcja „Bezpieczne komponowanie funkcji i argumentów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?

Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Elementy rest krotek i typy curry
  2. Bezpieczne komponowanie funkcji i argumentów
  3. Konstruktory silnie typowane
← Powrót do TypeScript Academy