配置强化类型以将 class 导出为 AMD 模块

Configure reinforced-typings to export class as AMD module

我在我的项目中使用 TypeScript 和 RequireJS。 RequireJS 需要 Typescript 以特殊方式 (export = ) 导出模块来模拟传统的 AMD 工作流程:

class Foo {
...
}
export = Foo

Reinforced-typings 项目帮助我将 C# class 转换为 TypeScript 模块,并获得类似

的输出
module Module1 {
   export class Foo {
   ...
   }
}

我在 Reinforced-typings 文档中找不到如何在生成的文件末尾获取 export = Module1 指令。

可能我应该使用自定义 ClassCodeGenerator,但我找不到如何指示它 append 结果模块,例如RtRaw代码。

在版本 1.5.2 中,您可以为此使用访问者覆盖:

using Reinforced.Typings.Visitors.TypeScript;
class AmdExportVisitor : TypeScriptExportVisitor
        {
            public AmdExportVisitor(TextWriter writer, ExportContext exportContext) : base(writer, exportContext)
            {
            }


            public override void VisitFile(ExportedFile file)
            {
                base.VisitFile(file);
                var ns = file.Namespaces.FirstOrDefault();
                if (ns != null)
                {
                    WriteLines($@"
export = {ns.Name};

");
                }
            }
        }

然后

confBuilder.Global(a => a.UseVisitor<AmdExportVisitor>());

你会得到想要的结果。