Digamos que quiero construir una clase de proxy a partir de la respuesta aceptada de esta pregunta .
Entonces necesito preparar algún objeto que contenga todas las clases como valores:
class Class1 {} class Class2 {} const ClassEnumeration = { class1: Class1, class2: Class2 } // then it will be used like that class DynamicClass { constructor (className, opts) { return new classes[className](opts); } } new DynamicClass('Class1'); new DynamicClass('Class2'); No puedo obtener qué tipo tiene ClassEnumeration en este caso. Supongo que será algo así como Record<string, ...?? > ¿Qué tipo tiene el segundo argumento aquí?
Deberías definirlo así:
const classes: Record<string, { new(...args: any[]): any }> = { class1: Class1, class2: Class2 } Tenga en cuenta que utilicé ...args: any[] como parámetros del constructor ya que no definió cómo deberían verse los parámetros del constructor. Ahora mismo aceptará cualquier argumento.
Además, el constructor actualmente no funcionará así. opts hacer que las opciones sean opcionales y declarar los tipos.
class DynamicClass { constructor (className: string, opts?: any) { return new classes[className](opts); } }