0Pricing
TypeScript Academy · Lekcja

Typy przecięć: A i B

Łącz typy za pomocą &, aby scalić ich właściwości.

Typy przecięć: A i B to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 2 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 przecięć łączą wiele typów w jeden. Wartość typu przecięcia musi jednocześnie spełniać wymagania WSZYSTKICH połączonych typów.

Podstawowa składnia przecięcia

Użyj operatora `&`, aby utworzyć przecięcie. Wynik zawiera wszystkie właściwości obu typów.
type Named = { name: string };
type Aged = { age: number };
type Person = Named & Aged;
const alice: Person = { name: 'Alice', age: 30 };

Wymagane są wszystkie właściwości

Przecięcie wymaga WSZYSTKICH właściwości ze wszystkich połączonych typów. Brak którejkolwiek właściwości powoduje błąd typów.
type A = { x: number };
type B = { y: number };
type AB = A & B;
// const p: AB = { x: 1 }; // Error — missing y

Łączenie typów obiektowych

Przecięć często używa się do łączenia dwóch typów obiektowych, które nie rozszerzają się wzajemnie.
type Serializable = { serialize(): string };
type Loggable = { log(): void };
type Service = Serializable & Loggable;

Przecięcie a extends

Rozszerzanie interfejsu i przecięcie dają podobne wyniki dla typów obiektowych, ale przecięcie działa z aliasami typów, w tym z uniami i typami prymitywnymi.
// Interface extend:
interface C extends A, B {}

// Intersection type:
type D = A & B;
// Both give the same shape for simple objects

Przecięcie sprzecznych typów

Jeśli dwa przecinane typy mają tę samą właściwość o sprzecznych typach, wynikiem dla tej właściwości jest `never`.
type X = { id: string };
type Y = { id: number };
type XY = X & Y;
// XY.id is string & number = never — impossible!

Przecięcie w parametrach funkcji

Za pomocą przecięcia można przyjąć argument, który musi spełniać wiele kontraktów interfejsów.
function process(item: Serializable & Loggable): void {
  item.log();
  console.log(item.serialize());
}

Wzorzec mixinów z przecięciami

Przecięcia umożliwiają stosowanie wzorca mixinów, czyli łączenie zachowań z wielu źródeł.
type Timestamped<T> = T & { createdAt: Date };
type User = Timestamped<{ name: string; email: string }>;

Przecięcia typów prymitywnych sprowadzają się do never

Przecięcie typów prymitywnych, które nie mogą mieć części wspólnej, sprowadza się do `never`.
type T = string & number; // never — a value can't be both

Przecięcie a unia: podstawowa różnica

Unia (`|`) oznacza LUB — wartość może być dowolnym jednym z typów. Przecięcie (`&`) oznacza I — wartość musi spełniać wymagania wszystkich typów.

Używanie przecięć z typami generycznymi

Połącz typ generyczny z dodatkowymi właściwościami za pomocą przecięcia, aby uzyskać elastyczne i rozszerzalne typy.
type WithId<T> = T & { id: number };
const user: WithId<{ name: string }> = { id: 1, name: 'Alice' };

Szybkie sprawdzenie

Do czego sprowadza się `type T = string & number`?

Podsumowanie

Typy przecięć (`&`) wymagają WSZYSTKICH właściwości ze wszystkich połączonych typów. Używaj ich do łączenia struktur obiektów, implementowania mixinów i łączenia typów generycznych. Sprzeczne przecięcia typów prymitywnych sprowadzają się do never.

Często zadawane pytania

Czy lekcja „Typy przecięć: A i B” jest bezpłatna?

Tak — pełny tekst „Typy przecięć: A i B” 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 „Typy przecięć: A i B”?

Łącz typy za pomocą &, aby scalić ich właściwości. Ć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 2 z 4.

Ile czasu zajmuje lekcja „Typy przecięć: A i B”?

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. Typy unii: A lub B
  2. Typy przecięć: A i B
  3. Rozróżniane unie na potrzeby bezpiecznego dopasowywania wzorców
  4. Praktyczne wzorce z uniami i przecięciami
← Powrót do TypeScript Academy