В TypeScript свойства объекта можно сделать доступными только для чтения, чтобы предотвратить их изменение после первоначального назначения. Эта функция обеспечивает целостность и неизменяемость данных. В этой статье мы рассмотрим различные методы определения свойств объектов, доступных только для чтения, в TypeScript, а также приведем примеры кода.
Метод 1: модификатор «только для чтения».
Самый простой способ сделать свойства объекта доступными только для чтения — использовать модификатор readonly
. Вот пример:
interface Person {
readonly name: string;
age: number;
}
const person: Person = {
name: "John",
age: 30,
};
person.name = "Jane"; // Error: Cannot assign to 'name' because it is a read-only property
person.age = 31; // No error
Метод 2: Object.freeze()
Метод Object.freeze()
можно использовать, чтобы сделать весь объект и его свойства доступными только для чтения. Вот пример:
const car = {
make: "Toyota",
model: "Camry",
};
Object.freeze(car);
car.make = "Honda"; // Error: Cannot assign to 'make' because it is a read-only property
car.model = "Accord"; // Error: Cannot assign to 'model' because it is a read-only property
Метод 3: Тип утилиты «Только для чтения»
TypeScript предоставляет тип утилиты под названием Readonly<T>
, который рекурсивно делает все свойства объекта и его вложенных объектов доступными только для чтения. Вот пример:
interface Point {
x: number;
y: number;
}
const point: Readonly<Point> = {
x: 10,
y: 20,
};
point.x = 5; // Error: Cannot assign to 'x' because it is a read-only property
point.y = 15; // Error: Cannot assign to 'y' because it is a read-only property
Метод 4: Тип утилиты ReadonlyArray
Если у вас есть массив, который вы хотите сделать доступным только для чтения, вы можете использовать тип утилиты ReadonlyArray<T>
. Вот пример:
const numbers: ReadonlyArray<number> = [1, 2, 3, 4, 5];
numbers.push(6); // Error: Property 'push' does not exist on type 'readonly number[]'
numbers[0] = 10; // Error: Index signature in type 'readonly number[]' only permits reading
В этой статье мы рассмотрели несколько способов сделать свойства объекта доступными только для чтения в TypeScript. Используя модификатор readonly
, Object.freeze()
и служебные типы, такие как Readonly<T>
и ReadonlyArray<T>
, вы можете обеспечить неизменность и защитить ваши данные от непреднамеренных изменений. Понимание этих методов поможет вам писать более надежный и удобный в обслуживании код TypeScript.