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
anyi 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) // booleanFunkcja 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) // booleanCompose 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() // numberWskazó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
- Elementy rest krotek i typy curry
- Bezpieczne komponowanie funkcji i argumentów
- Konstruktory silnie typowane