Я хочу создать функцию с именем createInstance
, которая получает экземпляр a
и создает новый экземпляр c
того же типа, что и a
. Обратите внимание, что внутри createInstance
я не знаю, какой тип a
, я знаю только, что он наследуется от некоторого класса A
. Но я хочу, чтобы c
был типа B
, который является реальным типом a
. Вот что у меня получилось:
class A {
constructor(public ref: string) {}
}
class B extends A {
}
const createInstance = (a: A): void => {
const t = a.constructor
const c = new t("c")
console.log(c)
console.log(c instanceof B)
}
const b = new B("b")
createInstance(b)
Я пробовал это на игровой площадке, и это работает, я получаю true
для c instanceof B
. Но в строке new t("c")
отображается предупреждение: «Это выражение не может быть построено. Тип« Функция »не имеет конструктивных сигнатур».
Как правильно это сделать? Спасибо