Доки по разработке
This project is maintained by teniryte
Принципы
readonly из ts-cookbook создаёт глубокую неизменяемость: вложенные объекты, массивы и коллекции становятся Readonly.Readonly<T> в стандартной библиотеке — только поверхностный; для глубокой защиты требуется отдельная утилита.Пример
import { Readonly, readonly } from 'ts-cookbook';
const array = readonly([1, 2, 3]);
// array.push(4); // Ошибка: метод отсутствует
class Person {
constructor(public name: string, public age: number) {}
}
const person = readonly(new Person('Harry', 42));
// person.name = 'Harr'; // Ошибка
const myObj2 = readonly({
o: { prop: 1 },
map: new Map([['foo', 'bar']]),
a: [1, 2, 3],
});
Практика
readonly к конфигурациям, состоянию стора и результатам вычислений, которые нельзя менять.shallowReadonly или кастомные типы, чтобы не усложнять API.Map, Set) проверьте, какие методы остаются после «заморозки»; методы мутации будут недоступны.