【2021-11】打卡

11/21/2021打卡

#11.21

TS获取readonlykey值

interface A  {
  readonly test: boolean;
  readonly test1: boolean;
  test2: string;
  test3: number
}

type IfEquals<X, Y, A=X, B=never> = (<T>() => T extends X ? 1 : 0) extends (<T>() => T extends Y ? 1 : 0) ? A : B;

type ReadonlyKey<T> = {
  [P in keyof T]: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, never, P>
}[keyof T];

type C = ReadonlyKey<A>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Last Updated:5/25/2024, 2:23:06 AM