Kształty obiektów
Readonly
Dodaje `readonly` do każdej właściwości obiektu, na jednym poziomie.
Czym jest
Standardowy homomorficzny typ mapowany tworzący widok tylko do odczytu. Przechodzi po `keyof T`, dodaje modyfikator do każdej właściwości i zachowuje resztę kształtu. Słowo „widok” jest ważne: wygenerowany JavaScript niczego nie zamraża, a mutowalny alias nadal może zmienić ten sam obiekt.
Przykłady
Readonly<{ a: string; b: number }>→{ readonly a: string; readonly b: number; }Readonly<{ nested: { value: number } }>→{ readonly nested: { value: number; }; }Zewnętrzne odwołanie jest tylko do odczytu; `nested.value` nie.
Readonly<[1, 2]>
→readonly [1, 2]
Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.
Czego nie robi
- Nie jest głębokie. Zagnieżdżone obiekty zachowują pierwotne modyfikatory, więc właściwość tylko do odczytu może wskazywać na mutowalne dane.
- Nie wywołuje `Object.freeze` i nie istnieje w czasie wykonania. Ogranicza przypisania widoczne dla kompilatora, nie mutacje wykonywane gdzie indziej.
Wniosek
`Readonly<T>` to kompilacyjny widok jednego poziomu tylko do odczytu. Do głębokości użyj rekurencji, a do prawdziwego zamrożenia operacji czasu wykonania.
