делать поля в объекте readonly, можно это как-то упростить или сделать, что-бы порядок полей не менялся?
export type Normalize<T extends object> = { [K in keyof T]: T[K] };
export type ReadOnly<T extends object, K extends keyof T = keyof T> = Normalize<
{ readonly [Key in K]: T[Key] } & {
[Key in keyof Omit<T, K>]: T[Key];
}
>;
type WithReadOnly<T, K extends keyof T> = { [P in K]: T[P]; } & { readonly [P in K]: T[P]; } & Omit<T, K>; type A = { a: string, b: string, c: string }; type B = WithReadOnly<A, 'b'>; // { a: string; readonly b: string; c: string; }
export type ReadOnly<T extends object, K extends keyof T = keyof T> = Normalize<Readonly<Pick<T, K>> & Omit<T, K>>
Обсуждают сегодня