TypeScriptTypy narzędziowe
Required<Type>
Tworzy typ, w którym wszystkie właściwości są wymagane.
Przykład
#TypeScript
interface Options {
theme?: 'dark' | 'light'
pageSize?: number
}
const defaults: Required<Options> = { theme: 'dark', pageSize: 20 }
function resolve(options: Options): Required<Options> {
return { ...defaults, ...options }
}
const resolved = resolve({ pageSize: 50 })
console.log(resolved.theme, resolved.pageSize)Wynik
dark 50
Definicja i zastosowanie
#Required<Type> robi odwrotność Partial: usuwa znak zapytania ze wszystkich pól, więc każde staje się obowiązkowe. Typ pola traci też wariant undefined wynikający z opcjonalności.
Przydaje się, gdy konfiguracja po połączeniu z wartościami domyślnymi jest już kompletna. Funkcja przyjmuje Partial<Config>, a zwraca Required<Config>, więc dalszy kod nie musi sprawdzać brakujących pól.
Podobnie jak inne typy narzędziowe działa płytko: zagnieżdżone obiekty zachowują swoje opcjonalne pola.
Składnia
#Składnia
type Nowy = Required<Typ>Parametry typu
#Type
typ obiektowy
Typ, którego pola mają stać się wymagane.
Dobre praktyki
#- Wzór „wejście
Partial, wyjścieRequired” świetnie sprawdza się przy opcjach z wartościami domyślnymi. - Uważaj przy rozwijaniu obiektów: jawne
undefinedw opcjach nadpisze wartość domyślną.
Powiązane hasła
#- Partial<Type>Tworzy typ, w którym wszystkie właściwości są opcjonalne.
- Readonly<Type>Tworzy typ, w którym wszystkie właściwości są tylko do odczytu.
- Pola opcjonalne (?)Właściwości, które mogą, ale nie muszą występować w obiekcie.
- Typy mapowaneTworzą nowy typ obiektu, przekształcając każdy klucz innego typu.
Widzisz błąd albo brakuje przykładu? Napisz do nas.