5 - Get Readonly Keys
Opened this issue · 0 comments
koSakano commented
type IfEquals<X, Y, A = X, B = never> =
(<T>() => T extends X ? 1 : 2) extends
(<T>() => T extends Y ? 1 : 2) ? A : B
type GetReadonlyKeys<T> = keyof {
[P in keyof T as IfEquals<{ -readonly [PP in P]: T[PP] }, { [PP in P]: T[PP] }, never, P>]: T[P]
}