Предполагая, что getWidgetType
возвращает конструктор, вы можете вызвать new wType('foo')
при условии, что подпись getWidgetType
явно заявляет, что возвращает сигнатуру конструктора.
Например, этот код будет действительным:
class Definition<T> {
// Takes in a constructor
constructor(public ctor: new (p: string) => T) {
}
// returns a constructor (aka a function that can be used with the new operator)
// return type annotation could be inferred here, was added for demonstrative purposes
getWidgetType() : new (p: string) => T{
return this.ctor;
}
}
const def = new Definition(class {
constructor(p: string) {}
});
const wType = def.getWidgetType();
const obj = new wType('foo')