No quiero declarar accountHandler como any , no es una buena práctica. ¿Cuál es un mejor enfoque para crear una variable de clase cuando tiene que asignarla a la clase en el constructor?
{ private accountHandler: any= {}; private requestLOB: string[] = []; constructor() { if (process.env.ENABLEBackendSwitch === "true") { this.accountHandler = new AccountBalanceHandlerV2(); } else { this.accountHandler = new AccountBalanceHandler(); } }En lugar de any , puede usar AccountBalanceHandlerV2 | AccountBalanceHandler . Pero en realidad ni siquiera necesita establecer el tipo, ya que TypeScript deducirá el valor por usted en función de lo que le asigne en el constructor (siempre que elimine su asignación predeterminada):
class A { private accountHandler; constructor() { if (process.env.ENABLEBackendSwitch === "true") { this.accountHandler = new AccountBalanceHandlerV2(); } else { this.accountHandler = new AccountBalanceHandler(); } } } se infiere que accountHandler es del tipo AccountBalanceHandlerV2 | AccountBalanceHandler .
Typescript en realidad inferirá el tipo de campos inicializados en los constructores. Entonces, si no tiene ninguna anotación, se inferirá.
class X { private accountHandler; // ^? X.accountHandler: AccountBalanceHandlerV2 | AccountBalanceHandler constructor() { if (process.env.ENABLEBackendSwitch === "true") { this.accountHandler = new AccountBalanceHandlerV2(); } else { this.accountHandler = new AccountBalanceHandler(); } } }Pero la mejor práctica es ser realmente explícito sobre el tipo:
class X { private accountHandler: AccountBalanceHandlerV2 | AccountBalanceHandler constructor() { if (process.env.ENABLEBackendSwitch === "true") { this.accountHandler = new AccountBalanceHandlerV2(); } else { this.accountHandler = new AccountBalanceHandler(); } } }