Tengo el siguiente violín ts:
class BaseFoo { name: string; constructor( name: string, ) { console.log("In Parent Constructor"); this.name = name; console.log("this.name in parent constructor " + this.name); } getFooBar(): string { throw "Not implemented"; } } class Foo extends BaseFoo { name!: string; constructor(name: string) { super(name); console.log("this.name in child constructor " + this.name); // this.elementValue = elementValue; } getFooBar(): string { return this.name; } } class CardObject { name: Foo; constructor(my_name: string) { this.name = new Foo(my_name); } } let c = new CardObject("baz") console.log(c.name.getFooBar())En el violín, se registra el siguiente resultado:
[LOG]: "this.name in parent constructor baz" [LOG]: "this.name in child constructor baz" [LOG]: "baz"Que es exactamente lo que esperaría.
En mi proyecto real (un proyecto de reacción) estoy ejecutando pruebas usando la prueba de scripts de reacción. Mi código se ve así:
// foo.tsx class BaseFoo { name: string; constructor(name: string) { console.log("In Parent Constructor"); this.name = name; console.log("this.name in parent constructor " + this.name); } getFooBar(): string { throw "Not implemented"; } } export class Foo extends BaseFoo { name!: string; constructor(name: string) { super(name); console.log("this.name in child constructor " + this.name); } getFooBar(): string { return this.name; } }Y mi prueba se ve así:
import {Foo} from "../foo" describe("Foo", () => { it("has a weird bug", () => { let my_foo = new Foo("Baz"); console.log(my_foo.getFooBar()); }); }); Cuando ejecuto la prueba con npm react-scripts test , se registra el siguiente resultado:
this.name in parent constructor Baz this.name in child constructor undefined undefined Muy confundido aquí sobre por qué el objeto secundario parece no tener la propiedad asignada. ¿Que está pasando aqui? ¿Es esto una peculiaridad con react-scripts test ? ¿Tiene algo que ver con cómo se exporta el módulo?