配置增强类型以添加​​自定义打字稿交集类型

时间:2018-07-13 11:06:05

标签: reinforced-typings

我正在使用Enhanced.typings流利的配置API(多种方法)将C#DTO映射到打字稿接口,从而生成一个文件。

当前我正在获取(正确)输出,例如

export interface ICourseDto
{
   start: Date;
   facultyMeetingRoom: IRoomDto;
   courseParticipants: ICourseParticipantDto[];
   ...
}
export interface IRoomDto ...

理想情况下,我想:

  1. import breeze from 'breeze-client'添加到生成的打字稿文件的开头
  2. 更改复杂属性的类型,以使上面的输出变为

-

export interface ICourseDto
{
    start: Date;
    facultyMeetingRoom: IRoomDto & breeze.Entity;
    courseParticipants: (ICourseParticipantDto & breeze.Entity)[];
    ...

使用fluent.typings流畅的配置是否有可能,如果可以,我需要什么配置代码来实现它?

1 个答案:

答案 0 :(得分:1)

实现所需目标的最简单方法是(其中s是ConfigurationBuilder):

s.Global(a => a.UseModules());
s.AddImport("breeze", "breeze-client");

var mySpecialTypes = typeof(IBreezeEntity).Assembly.GetTypes()
    .Where(d => typeof(IBreezeEntity).IsAssignableFrom(d));

foreach (var type in mySpecialTypes)
{
    s.Substitute(type, new RtSimpleTypeName($"I{type.Name} & breeze.Entity"));
}

增强。键入也保留继承。考虑从通用类型/接口派生您的实体,然后也将其导出。