流畅的模块名称更改

时间:2014-03-06 17:13:38

标签: typelite

可以像教程中所示更改名称:

TypeScript.Definitions()
    .ForLoadedAssemblies()
    .WithFormatter((type, f) => "I" + ((TypeLite.TsModels.TsClass)type).Name)

如何使用流畅的格式化程序更改模块名称?

3 个答案:

答案 0 :(得分:6)

从TypeLite版本1.4.0开始,以下工作正常以更改模块名称:

<# var ts = TypeScript.Definitions()
    .WithModuleNameFormatter((module) => "my.module.name");#>

或者您也可以使用已经设置为模块名称的内容来进行更多控制:

<# var ts = TypeScript.Definitions()
    .WithModuleNameFormatter((module) => "I" + ((TypeLite.TsModels.TsModule)module).Name);#>

答案 1 :(得分:3)

现在有一个TypeScriptFluent.WithFormatter的过载需要TsModuleNameFormatter委托,因此您可以转换模块名称。例如,此代码将模块名称转换为命名空间的最后一部分(MyCompany.Business.Module1 - &gt; Module1):

<#
var ts = TypeScript.Definitions()
          .WithFormatter((TsModuleNameFormatter)FormatModuleName)
#>
<#+
string FormatModuleName(string module) {
    var parts = module.Split(new []{'.'});
    var newModule = parts[parts.Length - 1];
    return newModule;
}
#>

更新

在最新版本的TypeLite 1.1.2.0 中,API稍有变化,因此上一个示例将如下所示:

<#
var ts = TypeScript.Definitions().WithModuleNameFormatter((TsModuleNameFormatter)FormatModuleName)
#>
<#+
string FormatModuleName(TsModel module) {
    var parts = module.Name.Split(new []{'.'});
    var newName = parts[parts.Length - 1];
    return newName;
}
#>

答案 2 :(得分:1)

目前,无法使用流畅配置全局更改模块名称。

但是,您可以按类更改模块名称:

TypeScript.Definitions().For<MyClass>().ToModule("ModuleName")