type Children = { children: Record } type TPartial = { info: string } // Error: Type alias 'TRequired' circularly references itself. type TRequired = { id: string } & Children // Error: Type alias 'T' circularly references itself. type T = Partial & AtLeastOne // 至少包含一个属性 type AtLeastOne = K extends unknown ? Pick & Partial> : never; 但是这样写就没有问题: type TPartial = { info: string } type TRequired = { id: string } & { children: Record } type T = Partial & AtLeastOne `type Children` 是一个通用的工具类型,但是有些地方可以写,有些地方就会报循环引用。如果我有些地方写 `Children` 有些地方写 `{ children: T }` 那还不如不要这个类型。有没有类型体操高手救救我?