TypeScript – популярный язык программирования, который добавляет статическую типизацию в JavaScript, обеспечивая улучшенные инструменты и проверку ошибок во время разработки. Одной из полезных функций TypeScript является глобальный тип утилиты Readonly. В этой статье мы рассмотрим различные методы, предоставляемые глобальным типом утилиты Readonly, а также примеры кода, демонстрирующие их использование.
- 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.
- Массив только для чтения:
Вы можете использовать тип утилиты 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.
- Свойства только для чтения в классах.
Вы можете применить тип утилиты 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.
- Сопоставленные типы, доступные только для чтения.
Служебный тип 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.
Помните, что использование режима «только чтение» не гарантирует неизменность во время выполнения, но помогает обеспечить неизменность на этапе разработки.