Ograniczenia generyczne za pomocą extends
Ograniczaj parametry typów do określonych kształtów.
Ograniczenia generyczne za pomocą extends to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 3 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
Problem bez ograniczeń
function getLength<T>(val: T): number {
// return val.length; // Error — T might not have .length
}Dodawanie ograniczenia
function getLength<T extends { length: number }>(val: T): number {
return val.length;
}
getLength('hello'); // OK — string has .length
getLength([1, 2]); // OK — array has .length
// getLength(42); // Error — number has no .lengthOgraniczanie do interfejsu
interface Named { name: string; }
function greet<T extends Named>(person: T): string {
return 'Hello, ' + person.name;
}Ograniczenie keyof
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const age = getProperty({ name: 'Alice', age: 30 }, 'age'); // numberOgraniczanie do unii
type Status = 'active' | 'inactive' | 'banned';
function setStatus<T extends Status>(status: T): void {
console.log('Setting status:', status);
}Ograniczanie do konstruktora
function create<T>(ctor: new () => T): T {
return new ctor();
}Wiele ograniczeń za pomocą przecięcia
interface Serializable { serialize(): string; }
interface Loggable { log(): void; }
function process<T extends Serializable & Loggable>(item: T): void {
item.log();
console.log(item.serialize());
}Dziedziczenie ograniczeń
class Animal { breathe() { return 'breathing'; } }
function care<T extends Animal>(a: T): string { return a.breathe(); }T rozszerza samo siebie (rekurencyjnie)
interface Comparable<T> { compareTo(other: T): number; }
function max<T extends Comparable<T>>(a: T, b: T): T {
return a.compareTo(b) >= 0 ? a : b;
}Komunikaty błędów ograniczeń
Szybkie sprawdzenie
Podsumowanie
Często zadawane pytania
Czy lekcja „Ograniczenia generyczne za pomocą extends” jest bezpłatna?
Tak — pełny tekst „Ograniczenia generyczne za pomocą extends” 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 „Ograniczenia generyczne za pomocą extends”?
Ograniczaj parametry typów do określonych kształtó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 3 z 4.
Ile czasu zajmuje lekcja „Ograniczenia generyczne za pomocą extends”?
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: parametry typów
- Generyczne interfejsy i aliasy typów
- Ograniczenia generyczne za pomocą extends
- Domyślne parametry typów