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

使用Reinforced.Typings框架时如何配置使导出类包含基类属性

Reinforced.Typings 导出基类属性配置方案

Reinforced.Typings 默认不会自动拉取未被显式标记导出的基类成员,要实现子类导出结果包含基类Id属性,可根据你需要的TS代码结构选择对应配置:


方案1:直接将基类属性拍平到子类(匹配你的预期输出)

不需要给IdEntity基类加任何导出特性,直接在全局配置中开启AutoExportBaseMembers开关即可,框架会自动递归向上查找所有基类的公开可导出成员,合并到当前类的导出结果中。
配置代码示例:

public static class TypingsConfig
{
    public static void Configure(ConfigurationBuilder builder)
    {
        // 开启自动导出基类成员
        builder.Global(globalConfig => globalConfig.AutoExportBaseMembers(true));
        
        // 你原本的导出配置保持不变
        builder.ExportAsClass<UserModel>();
    }
}

配置后生成的TS代码会完全符合你的预期:

export class UserModel
{
    public Id: number;
    public Name: string;
    public Email: string;
}

方案2:TS侧保留类继承关系

如果你希望TS代码和C#侧保持一致的继承结构,而非把基类属性拍平到子类,可以按以下方式配置:

  1. 给基类IdEntity也加上[TsClass]特性
  2. 全局配置开启自动引用传播
    配置代码示例:
[TsClass]
public class IdEntity
{
    public int Id { get; set; }
}

public static void Configure(ConfigurationBuilder builder)
{
    builder.Global(globalConfig => globalConfig.AutoPropagateReferences(true));
    builder.ExportAsClass<IdEntity>();
    builder.ExportAsClass<UserModel>();
}

最终生成的TS代码结构如下,同样可以正常访问Id属性:

export class IdEntity
{
    public Id: number;
}
export class UserModel extends IdEntity
{
    public Name: string;
    public Email: string;
}

注意事项

  • 旧版本中的FlattenHierarchy配置已被废弃,1.5+版本请统一使用AutoExportBaseMembers实现基类成员合并
  • 如果基类中有不需要导出的成员,给对应成员标记[TsIgnore]特性即可被自动排除

内容的提问来源于stack exchange,提问作者Felipe Costa Gualberto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 04:21:12