TypeScriptUnie i zawężanie
satisfies
Sprawdza, czy wartość pasuje do typu, nie zmieniając typu wywnioskowanego.
Przykład
#TypeScript
type Palette = Record<string, string | [number, number, number]>
const colors = {
accent: '#a78bfa',
success: [16, 185, 129]
} satisfies Palette
console.log(colors.accent.toUpperCase())
console.log(colors.success.join(', '))Wynik
#A78BFA 16, 185, 129
Definicja i zastosowanie
#Operator satisfies weryfikuje, że wyrażenie jest zgodne z podanym typem, ale zachowuje dokładny typ wywnioskowany z samej wartości. To różni go od adnotacji (const x: T = ...), która „rozszerza” typ do T.
Dzięki temu dostajesz dwie korzyści naraz: kompilator zgłosi literówkę lub brakujące pole, a jednocześnie zapamięta konkretne literały i klucze obiektu, więc późniejsze podpowiedzi są precyzyjne.
Najczęściej używa się go przy obiektach konfiguracji, mapach kolorów, tras czy tłumaczeń, gdzie chcesz sprawdzenia kształtu i zachowania szczegółowych typów.
Składnia
#Składnia
const wartosc = wyrazenie satisfies TypWięcej przykładów
#TypeScript
const annotated: Palette = { accent: '#a78bfa' }
annotated.accent.toUpperCase()
// Błąd: Property 'toUpperCase' does not exist on type 'string | [number, number, number]'.Dobre praktyki
#- Przy obiektach konfiguracji połącz
satisfieszas const:{ … } as const satisfies Config. - Wybierz adnotację, gdy chcesz, żeby zmienna miała ogólny typ, a
satisfies, gdy zależy Ci na dokładnych typach wartości.
Powiązane hasła
#- as constZamraża literały w wyrażeniu: najwęższe typy i pola tylko do odczytu.
- Asercja typu (as)Wskazanie kompilatorowi typu wartości, gdy wiesz więcej niż on.
- Record<Keys, Type>Tworzy typ obiektu o podanych kluczach, w którym każda wartość ma ten sam typ.
- Wnioskowanie typówAutomatyczne ustalanie typów przez kompilator bez pisania adnotacji.
Widzisz błąd albo brakuje przykładu? Napisz do nas.