¿Es una mala práctica usar las propiedades de un constructor de una clase dentro de una variable? Intenté esto y me sorprendió const name = new Name(time, course); funcionó, aunque supongo que tiene sentido ya que una instancia de Eng necesita que se creen esas propiedades del constructor, entonces estarían disponibles para usar en otro lugar.
import { Name } from './Name' class Eng { private _name = new Name(time, course); private constructor(time: String, course: String) {} method1(){ let results = name.convertTrials(); return results; } }Su ejemplo de código en realidad tiene errores de tipo:
class Eng { private _name = new Name(time, course); // Cannot find name 'time'.(2304) // Cannot find name 'course'.(2304) private constructor(time: string, course: string) {} } el time y el course no están en el alcance en lo que respecta al texto mecanografiado. Si desea utilizar parámetros de constructor, deben estar en el cuerpo del constructor.
Lo que puede confundirlo es que, cuando se compila, el código funciona bien. Esto se debe a que las propiedades de clase no estáticas se mueven al constructor por usted, ya que es donde deberían estar en JS simple.
Entonces su clase compilada se ve así:
// js class Eng { constructor(time, course) { this._name = new Name(time, course); } }Que debería funcionar sin problema.
Pero es un problema para Typescript, que cree que los argumentos del constructor no están dentro del alcance fuera del constructor.
Si no necesitas los argumentos:
class Foo { constructor() {} } class UseFoo { private foo = new Foo() private constructor() {} }Entonces no hay nada malo con su enfoque.