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

如何在TypeScript中定义提取类型所有公开成员的泛型工具

实现方案

TypeScript 中 keyof 运算符默认不会枚举类的 private、protected 修饰的成员,结合内置的 Pick 工具类型即可实现需求,适配你使用的 4.3.5 版本:

type PublicProps<T> = Pick<T, keyof T>
效果验证
class Thing {
  public name: string
  private secret: string

  public greet(): string { return '' }
  private curse(): string { return '' }
}

// 最终得到的类型等价于 { name: string; greet(): string }
type ThingPublic = PublicProps<Thing>
补充说明
  • 如果你传入的是类的构造函数类型而非实例类型,可以先通过内置的 InstanceType 工具类型转换后再处理:
type PublicPropsFromCtor<C extends new (...args: any[]) => any> = PublicProps<InstanceType<C>>

// 使用示例
type ThingPublic2 = PublicPropsFromCtor<typeof Thing>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:06:03