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

如何在TypeScript中动态将类转换为接口?

在TypeScript中从类动态提取仅含属性的接口

可以用TypeScript的条件类型工具,自动从类里提取仅包含实例属性(排除方法)的接口类型,具体步骤如下:

1. 定义提取实例属性的通用工具类型

这个类型会遍历类的所有成员,只保留非方法的属性:

type ExtractInstanceProperties<T> = {
  [K in keyof T as T[K] extends Function ? never : K]: T[K]
};

2. 对目标类使用该工具类型

针对你定义的A类,直接用工具类型生成对应的接口类型:

class A {
    private a:string;
    constructor(a:string) {
        this.a = a;
    }
    GetA() {
        return this.a;
    }
}

// 生成仅含属性的类型,等价于你想要的接口
type AInterface = ExtractInstanceProperties<A>;

生成后的AInterface类型完全等同于:

interface AInterface {
    a: string;
}

补充说明

  • 类实例传入Web Worker时,会被结构化克隆序列化,方法会被自动丢弃,只剩可枚举的实例属性,这个工具类型正好匹配序列化后的对象结构。
  • 如果类里有私有/受保护属性,生成的类型会带对应的修饰符,但这不影响和Web Worker返回的普通对象兼容——TypeScript在运行时不会检查访问修饰符的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:29:59