从只读类型中提取泛型类型
type Writable<K extends string | number | symbol, V> = {
-readonly [P in K]: V;
}
type ExtractFromReadonlySet<T> = T extends ReadonlySet<infer R> ? R : never;
type ExtractFromReadonlyArray<T> = T extends ReadonlyArray<infer R> ? R : never;
type ExtractFromReadonlyMap<T> = T extends ReadonlyMap<infer K, infer V> ? [K, V] : never;