En un esfuerzo por reducir el modelo en mis constructores, tengo una implementación de clase abstracta que intenta establecer campos en la clase de implementación. A continuación se muestra una versión simplificada. El problema es que en el constructor de la superclase, los campos parecen estar establecidos, pero fuera de ese constructor, no están undefined .
Código:
abstract class BaseClass { constructor(args: any) { Object.keys(args).forEach((key) => (this[key] = args[key])); console.log("constructed", this); } } class ChildClass extends BaseClass { a: number; b: string; print() { console.log(this); } } const val = new ChildClass({ a: 1, b: "str" }); val.print();La salida de este código es:
constructed ChildClass { a: 1, b: 'str' } ChildClass { a: undefined, b: undefined } ¿Hay alguna manera de hacer que el constructor de BaseClass establezca valores que sean accesibles desde ChildClass ?