TypeScriptGeneryki i typy zaawansowane
Typy indeksowane T[K]
Pobiera typ pola z innego typu, tak jak odczyt właściwości z obiektu.
Przykład
#TypeScript
interface Course {
title: string
level: 'easy' | 'hard'
lessons: { title: string; minutes: number }[]
}
type Level = Course['level']
// type Level = "easy" | "hard"
type Lesson = Course['lessons'][number]
// type Lesson = { title: string; minutes: number }
const lesson: Lesson = { title: 'Wstęp', minutes: 5 }
const level: Level = 'easy'
console.log(level, lesson.minutes)Wynik
easy 5
Definicja i zastosowanie
#Typ indeksowany Typ["pole"] zwraca typ konkretnego pola: dla Student["level"] będzie to number. Możesz też podać unię kluczy albo keyof, żeby dostać unię typów wszystkich pól.
Dzięki temu typy pomocnicze zawsze zgadzają się z typem źródłowym. Jeśli zmienisz typ pola w Student, wszystkie miejsca korzystające z Student["level"] zaktualizują się same.
Z tablic pobierzesz typ elementu przez Tablica[number], co w połączeniu z as const pozwala wyprowadzić unię wartości z listy.
Składnia
#Składnia
type TypPola = Typ["pole"]
type Element = Tablica[number]Dobre praktyki
#- Wyprowadzaj typy pomocnicze z typów źródłowych przez
T["pole"], zamiast kopiować definicje. - Zapis
typeof LISTA[number]zas constdaje unię wszystkich wartości tablicy.
Powiązane hasła
#Widzisz błąd albo brakuje przykładu? Napisz do nas.