Parametry rest w funkcjach
Typuj funkcje przyjmujące dowolną liczbę argumentów
Parametry rest w funkcjach to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 z 4. 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 4 lekcji w sumie.
Funkcje z wieloma argumentami
Parametry rest pozwalają funkcji przyjmować dowolną liczbę argumentów zgromadzonych w jednej tablicy. TypeScript typuje tę tablicę, zapewniając bezpieczeństwo także przy wywołaniach o zmiennej długości.
Podstawowy parametr rest
Ostatni parametr należy poprzedzić znakami ... i nadać mu typ tablicowy. Wewnątrz funkcji zachowuje się jak zwykła tablica.
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0)
}
console.log(sum(1, 2, 3, 4)) // 10Wywołanie bez argumentów
Parametr rest może odpowiadać zeru argumentów — tablica jest wtedy po prostu pusta. Przypadek wywołania bez argumentów nie wymaga specjalnej obsługi.
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0)
}
console.log(sum()) // 0Rest po parametrach stałych
Parametr rest może występować po parametrach stałych, ale musi być ostatni. Parametry stałe są wiązane jako pierwsze, a wszystko, co pozostanie, trafia do tablicy rest.
function join(separator: string, ...parts: string[]): string {
return parts.join(separator)
}
console.log(join("-", "a", "b", "c")) // a-b-cTylko jeden rest i zawsze na końcu
Można mieć najwyżej jeden parametr rest i po nim nie może występować żaden inny parametr. Umieszczenie parametru za rest powoduje błąd składni.
// function bad(...nums: number[], last: number) {} // Error
function ok(first: number, ...rest: number[]) {
return first + rest.length
}
console.log(ok(10, 1, 2)) // 12Ograniczenia typów elementów
Typ elementów tablicy rest określa typ każdego argumentu. Przekazanie wartości niewłaściwego typu zostanie wykryte podczas kompilacji.
function tags(...labels: string[]): string {
return labels.join(",")
}
console.log(tags("a", "b"))
// tags("a", 5) // Error: 5 is not a stringRest z typem sumy
Typ elementu może być typem sumy, co pozwala przekazywać argumenty różnych typów. Wewnątrz funkcji każdy element należy zawęzić przed użyciem.
function show(...items: (string | number)[]): string {
return items.map(String).join(" ")
}
console.log(show("x", 1, "y", 2)) // x 1 y 2Rest z typem krotki
Parametr rest może mieć typ krotki, aby opisać strukturę z elementami stałymi, po których następują elementy zmiennej liczby. Tutaj pierwszy argument jest typu string, a po nim może wystąpić dowolna liczba wartości typu number.
function record(...args: [string, ...number[]]): string {
const [label, ...values] = args
return label + ": " + values.join(",")
}
console.log(record("scores", 9, 8, 7))Rest typu krotki wymusza liczbę argumentów
W przypadku typu rest będącego krotką początkowe elementy są wymagane. Pominięcie obowiązkowego pierwszego argumentu powoduje błąd kompilacji — jest to silniejsze ograniczenie niż w przypadku zwykłej tablicy.
function record(...args: [string, ...number[]]): number {
return args.length
}
console.log(record("x")) // 1
// record() // Error: missing string argumentPrzekazywanie wartości rozproszonych do wywołania z rest
Istniejącą tablicę można przekazać do parametru rest, używając operatora spread w miejscu wywołania. Typ elementów tablicy musi być zgodny z typem parametru.
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0)
}
const values = [1, 2, 3]
console.log(sum(...values)) // 6Rest w praktyce
Parametry rest są podstawą pomocniczych funkcji do rejestrowania informacji, formaterów i narzędzi matematycznych — czyli wszystkiego, co obsługuje zmienną liczbę danych wejściowych o wspólnym lub ustrukturyzowanym typie.
function max(first: number, ...rest: number[]): number {
return rest.reduce((m, n) => (n > m ? n : m), first)
}
console.log(max(3, 7, 2, 9, 1)) // 9Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat typowanych parametrów rest.
Podsumowanie
Parametry rest używają ... przy ostatnim parametrze, aby gromadzić dodatkowe argumenty w typowanej tablicy. Muszą znajdować się na końcu i może występować tylko jeden taki parametr. Można nadać im typ zwykłej tablicy, tablicy typu sumy lub krotki, aby wyrazić strukturę z elementami stałymi, po których następują elementy zmiennej liczby, i wymusić odpowiednią liczbę argumentów. Istniejącą tablicę można rozproszyć w miejscu wywołania, aby przekazać ją do parametru rest.
Często zadawane pytania
Czy lekcja „Parametry rest w funkcjach” jest bezpłatna?
Tak — pełny tekst „Parametry rest w funkcjach” 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 4 lekcji w sumie.
Co nauczysz się w „Parametry rest w funkcjach”?
Typuj funkcje przyjmujące dowolną liczbę argumentów Ć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 1 z 4.
Ile czasu zajmuje lekcja „Parametry rest w funkcjach”?
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
- Parametry rest w funkcjach
- Spread w tablicach i obiektach
- Elementy rest w krotkach
- Typowanie funkcji wariadycznych