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 idOgraniczenie 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
- Funkcje generyczne i ograniczenia (extends, parametry domyślne)
- Partial, Readonly, Record, Pick, Omit
- Typy keyof i dostępu indeksowanego — wprowadzenie