8 - 只读 2
作者: VarunMendre创建于 2026年9月14日更新于 2026年9月14日
标签answer8en
// MyReadonly2<T, K>: 使 K 中的属性变为只读,其余保持可变。
// 如果省略 K,则默认为 T 的 keyof (所有键),行为类似 Readonly<T>。
//
// 使用交集(&)将键分割为两个映射类型:
// 1. K 中的键 → 只读
// 2. 不在 K 中的键 → 可变
//
// 一个单个映射类型无法根据键条件性地应用 readonly,因此我们使用两个过滤后的映射类型进行交集。
//
// type MyReadonly2<T, K extends keyof T = keyof T> = {
// readonly [P in keyof T as P extends K ? P : never]: T[P]
// } & {
// [P in keyof T as P extends K ? never : P]: T[P]
// }
内容来源: type-challenges/type-challenges