Przejdź do treści
webtype.orgsatisfies

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Operatory

    satisfies

    Sprawdza wartość względem typu, nie poszerzając jej do tego typu.

    Czym jest

    Dodane w 4.9, by rozwiązać realny dylemat: adnotacja na stałej daje sprawdzenie, ale wyrzuca wszystko, co w niej konkretne, a brak adnotacji zachowuje szczegół i nie sprawdza nic. `satisfies` robi jedno i drugie — ograniczenie jest egzekwowane, a wywnioskowanym typem jest ten wąski, który faktycznie napisałeś.

    Przykłady

    • typeof routes
      { readonly home: "/"; readonly about: "/about"; }
    • typeof widened
      { [x: string]: string; }

      Adnotacja zapada się do gołej sygnatury indeksu — ograniczenie sprawdzono, a każdy literał przy okazji wyrzucono. Właśnie tej stracie `satisfies` ma zapobiegać.

    • keyof typeof routes
      "home" | "about"

    Każdy rozwinięty typ powyżej wypisał TypeScript 5.9.3, nie ręka człowieka.

    Czego nie robi

    • Nie zmienia wartości ani emitowanego JavaScriptu. Jak każda konstrukcja na poziomie typów jest wymazywana i nigdy się nie wykonuje.
    • To nie rzutowanie. `as` każe kompilatorowi przestać się spierać; `satisfies` prosi go o sprawdzenie i potem milczy o wyniku.

    Wniosek

    Sięgaj po `as const satisfies X` przy obiektach konfiguracji. Dostajesz egzekwowane ograniczenie i zachowane typy literalne, co kiedyś było wyborem.