TypeScript Academy · Lekcja

Typy mapowane: przekształcanie typów obiektów

Iteruj po kluczach, aby tworzyć nowe kształty typów.

Lekcja 1 z 413 kroki

Typy mapowane: przekształcanie typów obiektó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.

Witamy

Typy mapowane iterują po kluczach typu, aby tworzyć nowe typy z przekształconymi właściwościami. Stanowią podstawę `Partial`, `Readonly`, `Record` i wielu innych narzędzi.

Podstawowa składnia typu mapowanego

Użyj `[K in keyof T]`, aby iterować po wszystkich kluczach T i utworzyć nowy typ.
type Copy<T> = { [K in keyof T]: T[K] };
type UserCopy = Copy<User>; // same as User

Uczynienie wszystkich właściwości opcjonalnymi

W ten sposób zaimplementowany jest `Partial` — dodaj `?` do każdej właściwości.
type Partial<T> = { [K in keyof T]?: T[K] };
type PartialUser = Partial<User>;

Uczynienie wszystkich właściwości tylko do odczytu

Dodaj `readonly` do każdej właściwości w typie mapowanym.
type Readonly<T> = { readonly [K in keyof T]: T[K] };
type FrozenUser = Readonly<User>;

Przekształcanie typów wartości

Zmień typ wartości każdej właściwości, zachowując klucze.
type Stringify<T> = { [K in keyof T]: string };
type StringUser = Stringify<User>; // all values are string

Filtrowanie właściwości za pomocą never

Użyj warunku w pozycji wartości i filtruj za pomocą `never` poprzez zmianę mapowania kluczy.
type OnlyStrings<T> = {
  [K in keyof T as T[K] extends string ? K : never]: T[K]
};

Record<K, V>

`Record` tworzy typ obiektu z określonymi kluczami i typami wartości.
type Record<K extends string | number | symbol, V> = { [P in K]: V };
const roles: Record<'admin' | 'user', boolean> = { admin: true, user: false };

Typy mapowane zachowują opcjonalność

Domyślnie typy mapowane zachowują modyfikatory opcjonalności i `readonly` z typu źródłowego.
interface User { id: number; name?: string; }
type Copy<T> = { [K in keyof T]: T[K] };
type C = Copy<User>; // id: number; name?: string (preserved)

Zmiana mapowania kluczy za pomocą as

Zmień mapowanie kluczy na nowe nazwy, używając `as` w typie mapowanym.
type Getters<T> = {
  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
};

Iterowanie po sumie typów

Mapuj po typie sumy zamiast po `keyof T`, aby tworzyć typy obiektów na podstawie sum typów.
type Flags = { [K in 'option1' | 'option2' | 'option3']: boolean };

Łączenie typów mapowanych i warunkowych

Typy mapowane i warunkowe można naturalnie łączyć, aby tworzyć zaawansowane przekształcenia.
type NullableValues<T> = { [K in keyof T]: T[K] | null };

Szybki sprawdzian

Co tworzy `{ [K in keyof T]?: T[K] }`?

Podsumowanie

Typy mapowane iterują po kluczach, aby tworzyć nowe typy. Mogą dodawać i usuwać `readonly` oraz `?`, przekształcać typy wartości, filtrować klucze za pomocą `never` i zmieniać mapowanie kluczy za pomocą `as`. Stanowią podstawę wszystkich wbudowanych typów narzędziowych TypeScript.
Bezpłatny start

Ucz się TypeScript dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
101
Lekcje
352

Często zadawane pytania

Czy lekcja „Typy mapowane: przekształcanie typów obiektów” jest bezpłatna?

Tak — pełny tekst „Typy mapowane: przekształcanie typów obiektó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 „Typy mapowane: przekształcanie typów obiektów”?

Iteruj po kluczach, aby tworzyć nowe kształty typó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 1 z 4.

Ile czasu zajmuje lekcja „Typy mapowane: przekształcanie typów obiektó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. Typy mapowane: przekształcanie typów obiektów
  2. Modyfikatory w typach mapowanych: readonly i ?
  3. Typy literałów szablonowych: wzorce ciągów znaków
  4. Zmiana mapowania kluczy za pomocą as w typach mapowanych
← Powrót do TypeScript Academy