Настройте усиленные типизации для экспорта класса в качестве модуля AMD - PullRequest
0 голосов
/ 29 января 2019

Я использую TypeScript и RequireJS в своем проекте.RequireJS требует, чтобы Typescript экспортировал модули особым образом ( export = ) для моделирования традиционного рабочего процесса AMD:

class Foo {
...
}
export = Foo

Проект усиленной типизации помогает мне преобразовать класс C # в модуль TypeScript,и получить вывод как

module Module1 {
   export class Foo {
   ...
   }
}

Я не могу найти в документации по усиленной типизации, как я могу получить директиву export = Module1 в конце сгенерированного файла.

Вероятно, я должен пойти напользовательский ClassCodeGenerator, но я не могу найти, как я могу дать ему команду добавить полученный модуль, например, с кодом RtRaw.

1 Ответ

0 голосов
/ 09 февраля 2019

В версии 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>());

И вы получите желаемый результат.

...