0Pricing
TypeScript Academy · Урок

Свойства readonly и свойства параметров

Используйте readonly и сокращённую запись свойств конструктора

«Свойства readonly и свойства параметров» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

readonly предотвращает изменение свойств после инициализации. Свойства параметров объединяют объявление и инициализацию в одной строке конструктора.

readonly у свойств класса

Объявите свойство как readonly, чтобы разрешить задать его один раз (в конструкторе), но запретить последующие изменения.
class Invoice {
  readonly invoiceId: string;
  constructor(id: string) { this.invoiceId = id; }
}
const inv = new Invoice('INV-001');
// inv.invoiceId = 'INV-002'; // Error!

readonly в интерфейсах

readonly также работает в интерфейсах и типах объектов, предотвращая повторное присваивание свойству.
interface Point { readonly x: number; readonly y: number; }
const p: Point = { x: 5, y: 10 };
// p.x = 0; // Error

Свойства параметров

Добавьте модификатор доступа перед параметром конструктора, чтобы объявить свойство и присвоить ему значение за один шаг.
class Product {
  constructor(
    public name: string,
    public price: number,
    private sku: string
  ) {} // no need to write this.name = name; etc.
}

Свойства параметров readonly

Объединяйте `readonly` с модификатором доступа для свойств параметров.
class Config {
  constructor(
    public readonly host: string,
    public readonly port: number = 3000
  ) {}
}

Инициализация в объявлениях

Свойство readonly можно инициализировать непосредственно в месте объявления. После этого его нельзя изменить.
class AppVersion {
  readonly version: string = '1.0.0';
  readonly buildDate: Date = new Date();
}

readonly и константа

`const` используется для переменных с областью видимости блока. `readonly` используется для свойств классов и элементов типов объектов. Они действуют в разных областях.
const API_KEY = 'secret'; // block variable
class Service {
  readonly key: string = API_KEY; // class property
}

Тип объекта Readonly

Вспомогательный тип `Readonly` делает все свойства T доступными только для чтения. Это удобно для создания неизменяемых снимков состояния.
interface User { name: string; age: number; }
const frozen: Readonly<User> = { name: 'Alice', age: 30 };
// frozen.name = 'Bob'; // Error

readonly не выполняет глубокую заморозку

Как и ReadonlyArray, readonly предотвращает только переназначение самого свойства, но не изменение объекта, на который это свойство указывает.
class Team {
  readonly members: string[] = [];
}
const t = new Team();
t.members.push('Alice'); // Allowed — the array itself is mutable!
// t.members = []; // Error — can't reassign the property

Свойства параметров избавляют от шаблонного кода

Без свойств параметров нужно объявить поле, объявить параметр конструктора и присвоить значение. С ними одна строка выполняет все три действия.
// Without parameter properties (verbose)
class A {
  private x: number;
  constructor(x: number) { this.x = x; }
}
// With parameter properties (concise)
class B {
  constructor(private x: number) {}
}

Когда следует избегать свойств параметров

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

Быстрая проверка

При использовании свойства параметра в TypeScript что по-прежнему верно для модификатора readonly?

Итоги

readonly предотвращает изменение свойства после создания объекта. Свойства параметров (модификатор доступа + имя параметра) объявляют и инициализируют свойства в одной строке. Объединяйте оба подхода для кратких неизменяемых конструкций классов.

Часто задаваемые вопросы

Урок «Свойства readonly и свойства параметров» бесплатный?

Да — полный текст урока «Свойства readonly и свойства параметров» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Свойства readonly и свойства параметров»?

Используйте readonly и сокращённую запись свойств конструктора Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Свойства readonly и свойства параметров»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Классы TypeScript и конструкторы
  2. Модификаторы public, private и protected
  3. Свойства readonly и свойства параметров
  4. Реализация интерфейсов с помощью классов
← Назад к TypeScript Academy