Доки по разработке
This project is maintained by teniryte
Принципы
{ [P in keyof T]: ... }) позволяет трансформировать каждое свойство исходного типа.readonly и ? можно добавлять или убирать для всех свойств сразу.Пример
type Readonly<T> = { readonly [P in keyof T]: T[P] };
type Optional<T> = { [P in keyof T]?: T[P] };
const obj = { a: 1, b: 'hello' };
const readonlyObj: Readonly<typeof obj> = { a: 1, b: 'hello' };
const optionalObj: Optional<typeof obj> = { a: 1 };
Практика
Mutable<T>, Nullable<T>, и т.д.) на базе отображаемых типов.keyof и ограничения, чтобы выбирать только часть ключей (Pick, Omit).