You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何按键名和类型筛选两个接口的公共参数?

筛选对象类型中键名与类型均一致的属性

我们需要实现一个类型工具,从两个对象类型中筛选出键名同时存在于两个类型,且对应属性类型完全一致的属性。

示例输入

interface human {
  name: string,
  height: number,
  weight: number
}

interface robot {
  name: number,
  height: number,
  weight: number
}

预期结果

interface commonHumanRobot {
  height: number,
  weight: number
}

解决方案

基于@Acid Coder的答案,以下是实现代码:

type selectCommon<T extends object, B extends object> = {
  [key in keyof T as T[key] extends B[key & keyof B] ? B[key & keyof B] extends T[key] ? key : never : never]: T[key]
}

该类型工具通过映射类型遍历第一个对象类型T的所有键,仅保留那些在B中也存在、且两者对应属性类型完全双向兼容的键,最终生成包含这些共同属性的新类型。

内容的提问来源于stack exchange,提问作者Андрей

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:55:21