TypeScript Academy · Lekcja

Zmiana mapowania kluczy za pomocą as w typach mapowanych

Zmieniaj nazwy kluczy podczas przekształcania typów.

Lekcja 4 z 413 kroki

Zmiana mapowania kluczy za pomocą as w typach mapowanych to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 4 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

TypeScript 4.1 dodał klauzulę `as` w typach mapowanych, umożliwiając zmianę mapowania (zmianę nazw) kluczy w ramach przekształcania typu.

Podstawowa zmiana nazw kluczy

Dodaj `as NewKeyType` po zmiennej klucza, aby zmienić nazwę klucza.
type Prefixed<T> = {
  [K in keyof T as `prefix_${string & K}`]: T[K]
};
type P = Prefixed<{ name: string }>;
// { prefix_name: string }

Filtrowanie kluczy za pomocą never

Zwróć never z klauzuli `as`, aby usunąć ten klucz z wynikowego typu.
type OnlyStrings<T> = {
  [K in keyof T as T[K] extends string ? K : never]: T[K]
};

Generowanie nazw getterów

Użyj Capitalize wraz z typami literałów szablonowych, aby wygenerować nazwy metod getterów.
type Getters<T> = {
  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
};
type UserGetters = Getters<{ name: string; age: number }>;
// { getName: () => string; getAge: () => number }

Generowanie nazw setterów

W podobny sposób wygeneruj nazwy setterów dla właściwości typu.
type Setters<T> = {
  [K in keyof T as `set${Capitalize<string & K>}`]: (val: T[K]) => void
};

Odwracanie typu Record

Zamień klucze i wartości miejscami za pomocą zmiany nazw kluczy.
type Invert<T extends Record<string, string>> = {
  [K in keyof T as T[K]]: K
};

Warunkowa zmiana nazw kluczy

Zastosuj różne transformacje kluczy w zależności od typu wartości.
type MethodKeys<T> = {
  [K in keyof T as T[K] extends Function ? K : never]: T[K]
};

Łączenie z literałami szablonowymi

Użyj typów literałów szablonowych podczas zmiany nazw, aby wygenerować klucze z przestrzenią nazw.
type Namespaced<T, NS extends string> = {
  [K in keyof T as `${NS}::${string & K}`]: T[K]
};

Mapowanie kluczy symboli

Zmiana nazw kluczy pozwala również pracować z kluczami symboli.

Praktyka: typ FormData

Utwórz obiekt formularza o wartościach typu string na podstawie typowanego modelu danych.
type FormFields<T> = {
  [K in keyof T as K extends string ? K : never]: string
};

Łączenie as z typami warunkowymi

Zmiana nazw kluczy i typy warunkowe mogą być łączone w celu tworzenia bardzo elastycznych transformacji typów.

Szybkie sprawdzenie

Co powoduje zwrócenie `never` z klauzuli `as` w typie mapowanym w odniesieniu do tego klucza?

Podsumowanie

Klauzula `as` w typach mapowanych pozwala zmieniać nazwy i filtrować klucze (za pomocą never), a także przekształcać je z użyciem literałów szablonowych i typów warunkowych. Umożliwia tworzenie zaawansowanych wzorców, takich jak generowanie getterów i setterów oraz filtrowanie właściwości według typu wartości.
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 „Zmiana mapowania kluczy za pomocą as w typach mapowanych” jest bezpłatna?

Tak — pełny tekst „Zmiana mapowania kluczy za pomocą as w typach mapowanych” 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 „Zmiana mapowania kluczy za pomocą as w typach mapowanych”?

Zmieniaj nazwy kluczy podczas przekształcania 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 4 z 4.

Ile czasu zajmuje lekcja „Zmiana mapowania kluczy za pomocą as w typach mapowanych”?

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