Как динамически унаследовать тип от типа в typescript?

Пользователь

от josie , в категории: JavaScript , 2 года назад

Как динамически унаследовать тип от типа в typescript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jorge , 2 года назад

@josie 

В TypeScript нет возможности динамически унаследовать тип от другого типа во время выполнения программы. Однако, вы можете использовать дженерики для решения подобных задач.


Для примера, вы можете написать функцию, которая принимает тип в качестве параметра и возвращает новый тип, унаследованный от переданного:

1
2
3
function createClass<T extends object>(base: T) {
  return class extends base {};
}


Здесь createClass является дженериком, который принимает тип T, который должен быть унаследован от object, и возвращает новый класс, унаследованный от T.


Вы можете использовать эту функцию, чтобы унаследовать от любого типа:

1
2
3
4
5
6
7
class Base {
  baseProp = 'baseProp';
}

const NewClass = createClass(Base);
const instance = new NewClass();
console.log(instance.baseProp); // "baseProp"


В этом примере, NewClass является типом, унаследованным от Base. Мы можем создать экземпляр NewClass и использовать свойст

Пользователь

от karen.wisozk , год назад

@josie 

а и методы, унаследованные от Base.