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

如何在TypeScript中提取接口的属性值类型(去除键名)

解决方案

直接获取目标类型(最简便方式)

如果已经明确要取的键名,无需先使用Pick,直接通过索引访问类型就能拿到对应的值类型:

interface A {
  person: {
    name: string;
    age: number;
  },
  count: number
}

// 直接得到你想要的类型C
type C = A['person'];

实现通用的StripKeyOut工具类型

如果你确实需要基于Pick后的单键对象类型提取值类型,可以定义如下工具类型:

// 提取单键对象类型的值类型
type StripKeyOut<T> = T[keyof T];

结合你的示例使用:

interface A {
  person: {
    name: string;
    age: number;
  },
  count: number
}

type B = Pick<A, 'person'>;
type C = StripKeyOut<B>; // 类型为 {name: string; age: number;}

原理说明

  • keyof T会获取对象类型T的所有键名,由于B是通过Pick选中单个键得到的类型,keyof B就是唯一的键'person'。
  • T[keyof T]通过索引访问,直接拿到该键对应的属性值类型。

注意:如果传入的T包含多个键,StripKeyOut<T>会返回所有值类型的联合类型,你的场景中因为是Pick单键,所以不会有这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:01:29