TypeScript to rozszerzenie języka JavaScript, które pozwala na statyczne typowanie zmiennych, funkcji i obiektów. Dzięki temu można uniknąć wielu błędów w trakcie kompilacji i lepiej zrozumieć strukturę kodu. Jednym z najpotężniejszych narzędzi dostępnych w TypeScript są typy pomocnicze. W tym artykule skupimy się na trzech użytecznych typach pomocniczych: Omit, Record i Pick.
Typ Omit
Typ Omit pozwala na tworzenie nowego typu danych na podstawie istniejącego, ale pomijając niektóre jego właściwości. Składnia Omit wygląda następująco:
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
Gdzie:
- T: to jest typ, z którego chcemy wybrać właściwości.
- K: to jest zestaw kluczy, które chcemy pominąć.
Przykład użycia typu Omit:
Załóżmy, że mamy interfejs dla obiektu reprezentującego użytkownika:
interface User {
id: number
name: string
email: string
age: number
}
Jeśli chcemy stworzyć nowy typ UserWithoutId
, który będzie oparty na interfejsie User
, ale nie będzie zawierał właściwości id
, możemy to zrobić za pomocą typu Omit:
type UserWithoutId = Omit<User, 'id'>
// Użycie: const user: UserWithoutId = { name: 'John Doe', email: '[email protected]', age: 30 }
Typ Record
Typ Record pozwala na tworzenie nowego typu, który składa się z określonych kluczy i odpowiadających im typów wartości. Składnia Record wygląda następująco:
type Record<K extends keyof any, T> = { [P in K]: T }
Gdzie:
- K: to jest zestaw kluczy, które chcemy zawrzeć w nowym typie.
- T: to jest typ, który będzie odpowiadał każdemu z tych kluczy.
Przykład użycia typu Record:
Załóżmy, że mamy typ dla statusów zamówienia:
type OrderStatus = 'new' | 'processing' | 'completed' | 'cancelled'
Teraz możemy użyć typu Record, aby stworzyć słownik, który przyporządkowuje każdemu z tych statusów opis:
type OrderStatusMap = Record<OrderStatus, string>
// Użycie: const statusMap: OrderStatusMap = { new: 'Nowe zamówienie', processing: 'W trakcie realizacji', completed: 'Zrealizowane', cancelled: 'Anulowane' }
Typ Pick
Typ Pick pozwala na stworzenie nowego typu, wybierając tylko określone właściwości z istniejącego typu. Składnia Pick wygląda następująco:
type Pick<T, K extends keyof T> = { [P in K]: T[P] }
Gdzie:
- T: to jest typ, z którego chcemy wybrać właściwości.
- K: to jest zestaw kluczy, które chcemy zawrzeć w nowym typie.
Przykład użycia typu Pick:
Załóżmy, że mamy interfejs dla obiektu reprezentującego produkt:
interface Product {
id: number
name: string
price: number
category: string
}
Jeśli chcemy stworzyć nowy typ ProductSummary
, który będzie zawierał tylko właściwości name
i price
, możemy to zrobić za pomocą typu Pick:
type ProductSummary = Pick<Product, 'name' | 'price'>
// Użycie: const product: ProductSummary = { name: 'Smartphone', price: 999 }
Podsumowanie
Typy Omit, Record i Pick są potężnymi narzędziami w języku TypeScript, które pozwalają na elastyczne manipulowanie typami danych. Typ Omit pozwala na tworzenie nowych typów poprzez pomijanie wybranych właściwości, typ Record umożliwia definiowanie słowników z określonymi kluczami i typami wartości, natomiast typ Pick pozwala na tworzenie nowych typów przez wybieranie tylko wybranych właściwości z istniejącego typu. Dzięki nim, możemy bardziej precyzyjnie definiować struktury danych i unikać niepożądanych błędów w naszym kodzie.