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