Изучение глобальной утилиты TypeScript только для чтения: методы и примеры кода

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

  1. Readonly:
    Тип утилиты Readonlyиспользуется для создания неизменяемой версии данного типа. Если тип помечен как доступный только для чтения, его свойства невозможно изменить.
interface Person {
  name: string;
  age: number;
}
const readOnlyPerson: Readonly<Person> = {
  name: "John",
  age: 30,
};
readOnlyPerson.name = "Jane"; // Error: Cannot assign to 'name' because it is a read-only property.
  1. Массив только для чтения:
    Вы можете использовать тип утилиты Readonlyдля создания неизменяемого массива. Если массив помечен как доступный только для чтения, вы не сможете изменять его элементы или длину.
const readOnlyArray: Readonly<string[]> = ["apple", "banana", "cherry"];
readOnlyArray.push("date"); // Error: Property 'push' does not exist on type 'readonly string[]'.
readOnlyArray[0] = "avocado"; // Error: Index signature in type 'readonly string[]' only permits reading.
  1. Свойства только для чтения в классах.
    Вы можете применить тип утилиты Readonlyк свойствам класса, чтобы предотвратить их изменение после инициализации.
class Car {
  readonly brand: string;
  readonly model: string;
  constructor(brand: string, model: string) {
    this.brand = brand;
    this.model = model;
  }
}
const myCar = new Car("Toyota", "Camry");
myCar.brand = "Honda"; // Error: Cannot assign to 'brand' because it is a read-only property.
  1. Сопоставленные типы, доступные только для чтения.
    Служебный тип Readonlyможно использовать с сопоставленными типами для создания неизменяемой версии типа объекта со всеми его свойствами, помеченными как только для чтения.
type ReadonlyPerson = Readonly<Person>;
const readOnlyPerson: ReadonlyPerson = {
  name: "John",
  age: 30,
};
readOnlyPerson.name = "Jane"; // Error: Cannot assign to 'name' because it is a read-only property.

Глобальный служебный тип Readonly в TypeScript предоставляет мощные механизмы для создания неизменяемых типов и предотвращения случайных изменений. Используя эту утилиту, вы можете повысить надежность своего кода. Понимание и использование методов, обсуждаемых в этой статье, поможет вам писать более безопасные приложения TypeScript.

Помните, что использование режима «только чтение» не гарантирует неизменность во время выполнения, но помогает обеспечить неизменность на этапе разработки.