TGViewer
Node.js Recipes Node.js Recipes @node_recipes · 3.1K subscribers
Post #122 1.19K
Как работает Readonly в TypeScript?
#typescript

В чистом JavaScript нельзя запретить изменение объектов и массивов без использования библиотек или просадки производительности.

В TypeScript для этого существует:
➡️ ключевое слово readonly в классе, интерфейсе или типе, которое запрещает изменение указанного свойства.
➡️ Readonly<Type> возвращает тип, у которого все свойства будут readonly
➡️ ReadonlyArray<Type> определяет типа массива, у которого запрещено изменение элементов
➡️ as const делает объект или массив неизменяемым

Данный синтаксис позволяет контролировать бизнес логику на этапе компиляции и не создает ухудшение перфоманса в run-time.

Однока следует помнить, что существует проблема: "Interface with readonly property is assignable to interface with mutable property" Пример:
interface MutableValue<T> { value: T; }
interface ImmutableValue<T> { readonly value: T; }
let i: ImmutableValue<string> = { value: "hi" };
i.value = "Excellent, I can't change it"; // compile-time error
let m: MutableValue<string> = i;
m.value = "Oh dear, I can change it";

Данная проблема известна уже 4 года и ее не планирую решать.
More from @node_recipes
  1. Jan 5, 2026По всьому світу проходять Cursor Meetups, де локальні спільноти діляться досвідом використ…
  2. Jan 5, 2026Думки на вихідних: Full Stack Learning Подивився останнє відео Сергія Немчинського про фул…
  3. Dec 31, 2025Залишаються лічені години 2025-го. І будьмо чесними: сам перехід на 2026-й нічого автомати…
  4. Dec 25, 2025Моє відкриття 2025 року, як доповідача, це Napkin.ai. На малюнку приклад того, як Napkin г…
  5. Dec 23, 2025А ось й ChatGPT додав 2025 review feature. Авжеж в мене half coded Nest.js app, як ще :)
  6. Dec 23, 2025Моє технічне відкриття 2025 року — centrifugal.dev У 2025-му я багато працював із реальним…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →