“typescript readonly” — это английская фраза, обозначающая функцию языка программирования TypeScript. В TypeScript ключевое слово readonly
используется для объявления того, что свойство или переменную не следует изменять после присвоения значения. Это обеспечивает своего рода неизменяемость и помогает обеспечить целостность данных в вашем коде.
Вот несколько методов, связанных с использованием readonly
в TypeScript:
- Свойства только для чтения: модификатор
readonly
можно использовать для объявления свойств класса, которые можно установить только во время инициализации или внутри конструктора класса. После назначения эти свойства нельзя изменить.
Пример:
class Person {
readonly name: string;
constructor(name: string) {
this.name = name;
}
}
const person = new Person("John");
console.log(person.name); // Output: John
person.name = "Mike"; // Error: Cannot assign to 'name' because it is a read-only property.
- Массивы только для чтения: TypeScript предоставляет служебный тип под названием
ReadonlyArray
, который гарантирует, что массив не может быть изменен после его инициализации. Это предотвращает добавление, удаление или переназначение элементов.
Пример:
const numbers: ReadonlyArray<number> = [1, 2, 3];
console.log(numbers[0]); // Output: 1
numbers.push(4); // Error: Property 'push' does not exist on type 'readonly number[]'.
numbers[0] = 5; // Error: Index signature in type 'readonly number[]' only permits reading.
- Параметры только для чтения. Вы можете пометить параметры функции как
только для чтения
, чтобы указать, что функция не должна изменять их значения.
Пример:
function printName(name: readonly string[]) {
console.log(name.join(" "));
}
const names: string[] = ["John", "Doe"];
printName(names); // Output: John Doe
names.push("Smith"); // Error: Property 'push' does not exist on type 'readonly string[]'.
Использование модификатора readonly
в TypeScript помогает обеспечить неизменяемость и повышает безопасность кода, предотвращая случайные изменения. Это особенно полезно при работе со структурами данных, которые должны оставаться неизменными после инициализации.