0Pricing
TypeScript Academy · Lekcja

Funkcje generyczne: parametry typów

Dodawaj parametry typów do funkcji, aby można było ich wielokrotnie używać.

Funkcje generyczne: parametry typów 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.

Wprowadzenie

Typy generyczne pozwalają pisać funkcje działające z dowolnym typem przy zachowaniu bezpieczeństwa typów. Zamiast `any` używa się parametru typu, który jest ustalany podczas wywołania funkcji.

Problem rozwiązywany przez typy generyczne

Funkcja zwracająca `any` traci informacje o typie. Typy generyczne zachowują zależność między typami danych wejściowych i wyjściowych.
// Without generics — loses type info
function first(arr: any[]): any { return arr[0]; }

// With generics — type-safe
function first<T>(arr: T[]): T { return arr[0]; }

Składnia parametrów typu

Zadeklaruj parametr typu za pomocą nawiasów ostrych `` przed listą parametrów. Użyj T w parametrach i typie zwracanym.
function identity<T>(value: T): T {
  return value;
}
const n = identity(42);       // T is number
const s = identity('hello');  // T is string

Wnioskowanie typu dla funkcji generycznych

TypeScript wnioskuje argument typu na podstawie rzeczywistego argumentu. Zwykle nie trzeba podawać go jawnie.
function wrap<T>(val: T): T[] { return [val]; }
const nums = wrap(42);    // T inferred as number -> number[]
const strs = wrap('hi');  // T inferred as string -> string[]

Wiele parametrów typu

Funkcje mogą mieć wiele parametrów typu.
function pair<A, B>(a: A, b: B): [A, B] {
  return [a, b];
}
const p = pair(1, 'hello'); // [number, string]

Generyczne funkcje tablicowe

Typy generyczne są niezbędne w funkcjach pomocniczych dla tablic, które działają z dowolnym typem elementów.
function filterNull<T>(arr: (T | null)[]): T[] {
  return arr.filter((x): x is T => x !== null);
}

Jawne argumenty typu

Można jawnie podać argumenty typu, gdy TypeScript nie może ich wywnioskować.
function create<T>(): T | null { return null; }
const user = create<User>(); // T cannot be inferred — must be explicit

Typ generyczny a any

W przeciwieństwie do `any`, typy generyczne zachowują zależność między typami w całej funkcji. Typ zwracany jest powiązany z typem wejściowym.
function echo<T>(val: T): T { return val; }
const n: number = echo(42);   // OK
// const s: string = echo(42); // Error — T is number

Generyczne funkcje strzałkowe

Funkcje strzałkowe używają tej samej składni, ale w plikach .tsx wymagają przecinka, aby odróżnić ją od tagów JSX.
const identity = <T>(val: T): T => val;
// In .tsx files:
const identity2 = <T,>(val: T): T => val;

Zwracanie innego typu

Funkcje generyczne mogą wykorzystywać parametr typu w przekształcony sposób.
function mapArray<T, U>(arr: T[], fn: (item: T) => U): U[] {
  return arr.map(fn);
}
const lengths = mapArray(['hello', 'world'], s => s.length);
// lengths: number[]

Parametry generyczne z wartościami domyślnymi

Podaj domyślny typ dla parametru typu, aby uczynić go opcjonalnym.
function createList<T = string>(): T[] { return []; }
const list = createList(); // T defaults to string

Szybkie sprawdzenie

Jaki jest typ zwracany przez `identity(42)`?

Podsumowanie

Funkcje generyczne używają parametrów typu (T), aby zachować zależności między typami danych wejściowych i wyjściowych. TypeScript automatycznie wnioskuje argumenty typu. Używaj typów generycznych zamiast any, aby pisać wielokrotnego użytku narzędzia bezpieczne typowo.

Często zadawane pytania

Czy lekcja „Funkcje generyczne: parametry typów” jest bezpłatna?

Tak — pełny tekst „Funkcje generyczne: parametry typó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 4 lekcji w sumie.

Co nauczysz się w „Funkcje generyczne: parametry typów”?

Dodawaj parametry typów do funkcji, aby można było ich wielokrotnie używać. Ć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 „Funkcje generyczne: parametry typó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. Funkcje generyczne: parametry typów
  2. Generyczne interfejsy i aliasy typów
  3. Ograniczenia generyczne za pomocą extends
  4. Domyślne parametry typów
← Powrót do TypeScript Academy