typescript - Type no proporciona coincidencia para la firma 'new (...args: any): any'
Tengo una clase genérica y quiero restringir qué tipos se pueden usar. Específicamente, quiero que sean clases y que tengan un método llamado hasPrimitives. Además, quiero pasar el constructor de esa clase como un parámetro de una función de la clase genérica para poder construir nuevas instancias. Aquí hay un ejemplo de lo que he pensado para lograrlo:
type HasPrimitives = {
new(...args: any): any,
hasPrimitives(): boolean
}
class FirstClass {
id: number;
constructor(id: number){
this.id = id;
}
hasPrimitives() {
return true;
}
}
class GenericClass<T extends HasPrimitives> {
testFunction(example: T) {
console.log(example.hasPrimitives())
}
build(Ctor: new (...args: ConstructorParameters<T>) => T) {
// get the arguments somehow
return new Ctor(args);
}
}
const genericInstance = new GenericClass<FirstClass>();
Podría usar any como tipo de args, pero creo que es mejor idea usar ConstructorParameters para poder restringirlo más. Sin embargo, estoy recibiendo un error: Type 'FirstClass' no proporciona una coincidencia para la firma 'new (...args: any): any'. ¿Cómo podría solucionarlo? ¡Gracias!