Я генерирую машинописный клиент (с openapi-генератором) из описания OpenApi, но у генератора есть известная проблема с полиморфизмом.
Конечная точка Http:
public Shape get();
public IList<Circle> getCircles();
Модели:
public Shape { ... }
public Circle : Shape { ... }
public Rectangle : Shape { ... }
Сгенерированный клиент Typescript
import { Circle | Rectangle } from '../model/models';
import { Circle } from '../model/models';
public get() : Observable<Circle | Rectangle>;
public getCircles() : Observavle<Circle[]>;
Как видите, проблема заключается в импорте. Один из моих коллег предложил исправить это с помощью пользовательского задания «глоток» с помощью Regex magi c. Поскольку я совершенно незнаком с Regex, я не знаю, как собирать каждый импорт и заменять его одной допустимой строкой импорта, разделенной запятыми.
import { Circle, Rectangle } from '../model/models';
То, что я уже достиг, это сопоставление строк импорта с этим:
/import \{ (?<model>[A-Za-z0-9|, ]+) \} from \'\.\.\/model\/models\'\;/g
Найден этот npm пакет для замены регулярных выражений gulp-replace