0Pricing
TypeScript Academy · Lekcja

Funkcje generyczne i ograniczenia (extends, parametry domyślne)

Tworzenie funkcji generycznych, dodawanie ograniczeń za pomocą extends oraz używanie domyślnych parametrów typów w wygodnych API

Funkcje generyczne i ograniczenia (extends, parametry domyślne) to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 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: Tworzyć wielokrotnego użytku i bezpieczne typowo funkcje za pomocą generyków. Należy definiować parametry typu, dodawać ograniczenia extends oraz ustawiać domyślne parametry typu, aby poprawić DX.

Generyk tożsamości

Należy zdefiniować parametr typu <T>. Kompilator wywnioskuje T na podstawie argumentów, dlatego kod wywołujący rzadko musi jawnie podawać ten parametr.

function identity<T>(x: T): T {
  return x;
}

const a = identity(42);    // T inferred as number
const b = identity("ts"); // T inferred as string
console.log(a, b);

Ograniczenie za pomocą extends

Należy użyć extends, aby wymagać określonej struktury, na przykład id. Dzięki typowaniu strukturalnemu T może zawierać dodatkowe pola.

function getId<T extends { id: number }>(item: T): number {
  return item.id;
}

getId({ id: 1, name: "Ada" }); // OK (has id)
// getId({ name: "Lin" });    // Error: missing id

Ograniczenie keyof

Należy ograniczyć K za pomocą keyof T, aby dozwolone były wyłącznie nazwy właściwości typu T. Typ zwracany jest typem właściwości T[K].

function pluck<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

const user = { id: 7, name: "Neo" };
const v1 = pluck(user, "name"); // string
const v2 = pluck(user, "id");   // number
console.log(v1, v2);

Domyślne parametry typu

Domyślne parametry typu ograniczają ilość kodu szablonowego. Kod wywołujący może pominąć <T> w typowych przypadkach, a w razie potrzeby nadal podać własny parametr.

interface Box<T = string> {
  value: T;
}

const aBox: Box = { value: "hi" };       // T defaults to string
const nBox: Box<number> = { value: 123 }; // explicit override
console.log(aBox.value, nBox.value);

Wskazówki

Wskazówki:

  • Należy pozwolić, aby wnioskowanie typów wykonało swoją pracę, i unikać zbędnych adnotacji T.
  • extends należy dodawać tylko wtedy, gdy implementacja wymaga składowych T.
  • W typowych przypadkach warto podawać wartości domyślne, aby korzystanie z API było wygodne.

Sprawdzenie ograniczenia

Szybkie sprawdzenie: Co zapewnia T extends { id: number }?

Podsumowanie

Podsumowanie: Należy definiować funkcje generyczne, stosować ograniczenia extends oraz ustawiać domyślne parametry typu, aby zachować elastyczność i przystępność API.

Często zadawane pytania

Czy lekcja „Funkcje generyczne i ograniczenia (extends, parametry domyślne)” jest bezpłatna?

Tak — pełny tekst „Funkcje generyczne i ograniczenia (extends, parametry domyślne)” 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 „Funkcje generyczne i ograniczenia (extends, parametry domyślne)”?

Tworzenie funkcji generycznych, dodawanie ograniczeń za pomocą extends oraz używanie domyślnych parametrów typów w wygodnych API Ć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 3.

Ile czasu zajmuje lekcja „Funkcje generyczne i ograniczenia (extends, parametry domyślne)”?

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 i ograniczenia (extends, parametry domyślne)
  2. Partial, Readonly, Record, Pick, Omit
  3. Typy keyof i dostępu indeksowanego — wprowadzenie
← Powrót do TypeScript Academy