Przejdź do treści
Readonly

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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.