配置强化类型以将 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>());
你会得到想要的结果。
我在我的项目中使用 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>());
你会得到想要的结果。