核心结论
映射类型遍历属性键时,同态映射通常会保留来源属性的可选和只读修饰符;可以使用 +?、-?、+readonly、-readonly 显式添加或移除修饰符,其中 + 通常可以省略。模型转换时必须区分四种语义:属性可以缺席、属性必须存在但值可为 undefined、属性不可通过当前引用重新赋值,以及对象在运行时真正不可变。它们并不等价,机械地递归应用 Partial 或 Readonly 很容易破坏业务契约。
底层机制
映射类型以 keyof T 得到键集合,再用 T[K] 取得各键对应的值类型。对于直接遍历 keyof T 的同态映射,如果没有显式修改修饰符,原