对象工具类型发生键冲突时应采用覆盖、排除还是交集语义
简答题中等1018 次浏览
参考答案与解析
# 核心结论
对象工具类型遇到同名键时,没有一种适用于所有场景的统一规则。设计前必须明确目标是“右侧覆盖左侧”“禁止任何冲突”“两个约束同时成立”,还是“只选取或排除部分键”。如果希望模拟浅层对象展开 { ...a, ...b },通常应先从左侧移除右侧已有的键,再与右侧组合;直接使用交叉类型 A & B 表达的是同时满足两个类型,而不是后者覆盖前者。
type Merge<A extends object, B extends object> =
Omit<A, keyof B> & B;
type Simplify<T> = {
[K in keyof T]: T[K];
};
type
