Typy indeksowane T[K]

Pobiera typ pola z innego typu, tak jak odczyt właściwości z obiektu.

Na tej stronie

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] z as const daje unię wszystkich wartości tablicy.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.