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

如何用Pick工具类型选取无命名键嵌套对象的指定属性?

解决方案:提取嵌套索引签名对象的指定属性

你之前的写法问题在于:Pick工具类型只能直接作用于单个对象类型,无法识别路径字符串(比如'streaming[key].title'),也不能直接对索引签名的外层对象使用keyof来提取内层属性。

要实现需求,需要分两步处理:

  • 先提取streaming内部每个键对应的值类型
  • 对该值类型使用Pick筛选目标属性,再重组回原嵌套结构

最终可行代码

type SomeData = {
  streaming: {
    [key: string]: {
      id: number;
      title: string;
      live: string;
      // 其他属性
    };
  };
};

// 先获取streaming内部值的类型
type StreamingItem = SomeData['streaming'][string];
// 提取指定属性并重组为目标类型
type MyType = {
  streaming: {
    [key: string]: Pick<StreamingItem, 'title' | 'live'>;
  };
};

简化内联写法

如果不需要单独定义StreamingItem,可以直接合并步骤:

type MyType = {
  streaming: {
    [key: string]: Pick<SomeData['streaming'][string], 'title' | 'live'>;
  };
};

最终类型效果

MyType的结构会是:

{
  streaming: {
    [key: string]: {
      title: string;
      live: string;
    };
  };
}

完全符合你只保留title和live属性的需求。

内容的提问来源于stack exchange,提问作者Yusuf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:47:02