liqrizz
@liqrizz
лол

Как правильно написать рекурсию?

Пишу миксины не могу написать правильно рекурсию

type Constructor = new (...args: any[]) => {};


export function mixin<TBase extends Constructor>(Base: TBase[], count = 0): TBase {
  const currentClass = Base[count];
  if (count === Base.length - 1){
    return class extends currentClass {};
  } else {
    count++;
    return class extends mixin(Base, count++) {};
  }
}
// должно получится типа так
// return class extends one
//   return class extends two
//     return class extends three
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Используй готовые либы(или смотри на их код).
Сейчас миксины в ts представляют собой костыли поверх багов.

По твоему примеру: ты не можешь просто взять массив и получить из него вразумительные типы. Тебе нужны оврлоады на каждый отдельный тип, чтоб получить на выходе юнион.
Я мог бы что-нибудь накостылить, но не буду, потому что это больно.)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы