Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
Readonly — это utility тип в TypeScript, который делает все свойства типа только для чтения (read-only). После того, как свойство становится readonly, оно не может быть изменено при прямом присвоении в коде, что помогает избежать непреднамеренных мутаций объекта.
Readonly<T>
T — исходный тип, все свойства которого вы хотите сделать неизменяемыми.Тип Readonly чаще всего используется, чтобы защитить объекты от нежелательных изменений, сохраняя при этом доступ к чтению их свойств.
interface User {
id: number;
name: string;
}
type ReadonlyUser = Readonly<User>;
const user: ReadonlyUser = {
id: 1,
name: "Alice",
};
user.name = "Bob";
// Ошибка: Cannot assign to 'name' because it is a read-only property`
ReadonlyUser превращает все свойства ( id и name) в readonly.Пример для неизменяемых конфигураций:
Иногда бывает нужно зафиксировать настройки, чтобы их нельзя было изменить после инициализации:
interface Config {
readonly port: number; // Уже задано явно
dbName: string;
}
// С помощью Readonly делаем все поля только для чтения
type FullReadonlyConfig = Readonly<Config>;
const config: FullReadonlyConfig = {
port: 8080,
dbName: "mainDB",
};
config.dbName = "testDB";
// Ошибка: 'dbName' is read-only`
port стоит readonly, но также и dbName становится readonly, когда мы оборачиваем весь интерфейс в Readonly<Config>.Readonly<T>, чтобы не допустить случайных изменений передаваемого объекта:function printUser(user: Readonly<User>) {
// user.id = 42; // Ошибка
console.log(user.id, user.name);
}
readonly, TypeScript выдаст ошибку на этапе компиляции, помогая избежать непреднамеренных мутаций.