Как определить свойства только для чтения в TypeScript: методы и примеры

В TypeScript свойства, доступные только для чтения, — это свойства, которым можно присвоить значение только один раз и которые нельзя изменить впоследствии. Они полезны, если вы хотите гарантировать, что определенные свойства остаются постоянными и не могут быть случайно изменены.

Существует несколько способов определения свойств, доступных только для чтения, в TypeScript:

  1. Использование модификатора readonly. Вы можете использовать модификатор readonly, чтобы объявить свойство доступным только для чтения. Например:
class Person {
  readonly name: string;
  constructor(name: string) {
    this.name = name;
  }
}
  1. Использование типа утилиты Readonly: TypeScript предоставляет тип утилиты под названием Readonly, который позволяет создавать версию типа объекта только для чтения. Например:
type Point = {
  readonly x: number;
  readonly y: number;
};
const p: Readonly<Point> = { x: 10, y: 20 };
  1. Использование интерфейса. Вы можете определить интерфейс со свойствами, доступными только для чтения. Объекты, реализующие этот интерфейс, должны будут иметь эти свойства только для чтения. Например:
interface Circle {
  readonly radius: number;
}
const c: Circle = { radius: 5 };
  1. Использование подписей индексов TypeScript. Вы можете использовать сигнатуры индексов для определения свойств, доступных только для чтения. Этот подход позволяет вам иметь комбинацию изменяемых свойств и свойств, доступных только для чтения. Например:
type Config = {
  readonly [key: string]: string;
};

При определении свойств, доступных только для чтения, имейте в виду, что им можно присвоить значение только во время инициализации или внутри конструктора. Любая попытка изменить их впоследствии приведет к ошибке компиляции.