Operatory
as const
Powstrzymuje kompilator przed poszerzeniem literału do jego typu ogólnego.
Czym jest
Domyślnie const x = 1 to 1, ale { a: 1 } ma a: number, bo właściwości obiektu są mutowalne, a mutowalne miejsce nie obieca, że zostanie 1. as const mówi, że nic tu nie zostanie nadpisane, więc typy literalne można zachować, a tablice stają się krotkami tylko do odczytu. To wejście do niemal każdej typowej sztuczki startującej z prawdziwych danych.
Przykłady
typeof plain→{ kind: string; sides: number; }typeof frozen→{ readonly kind: "circle"; readonly sides: 0; }Każda właściwość staje się
readonly, a każda wartość zachowuje swój typ literalny.typeof tuple→readonly [1, 2]Tablica staje się krotką tylko do odczytu — tak literalna tablica dociera na poziom typów z nienaruszoną długością.
Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.
Czego nie robi
- Nic nie zamraża w czasie wykonania. Robi to
Object.freeze;as constjest wymazywane, a obiekt jest tak samo mutowalny jak był. - Nie przenika przez wywołania funkcji.
as constdotyczy literału, który napisałeś, a nie tego, co zwraca funkcja.
Wniosek
Jeśli typowa sztuczka „nie działa na moich danych”, sprawdź, czy dane się nie poszerzyły. as const jest odpowiedzią zaskakująco często.

