从只读类型中提取泛型类型

  1. type Writable<K extends string | number | symbol, V> = {
  2. -readonly [P in K]: V;
  3. }
  1. type ExtractFromReadonlySet<T> = T extends ReadonlySet<infer R> ? R : never;
  2. type ExtractFromReadonlyArray<T> = T extends ReadonlyArray<infer R> ? R : never;
  3. type ExtractFromReadonlyMap<T> = T extends ReadonlyMap<infer K, infer V> ? [K, V] : never;