Estoy tratando de vincular las propiedades de una clase a una devolución de llamada dentro de esa clase.
Ejemplo rápido:
// caller const first = (): void => { const testClass = new TestClass(); testClass.second(() => { console.log(this.member) // error TS2532: Object is possibly 'undefined' } } // TestClass ... member: string = 'test'; second(cb: () => void) { const self = this; cb.bind(self)(); } this parece estar posiblemente indefinido.
¿Cómo puedo acceder a los miembros de las clases desde una devolución de llamada externa?
Las Arrow Functions son para el enlace automático al alcance actual y los objetos principales, por lo que no puede llamarlos con enlaces de sus devoluciones de llamada. así que aquí el interpreter de javascript está tratando de encontrar el padre que se definió antes en la devolución de llamada.
// caller const first = (): void => { const testClass = new TestClass(); testClass.second(function() { console.log(this.member) } }Agregue una condición antes del registro de la consola para evitar la impresión de objetos no definidos.
de tu ejemplo:
// caller const first = (): void => { const testClass = new TestClass(); testClass.second(() => { if (this.member) console.log(this.member) } } // TestClass ... member: string = 'test'; second(cb: () => void) { const self = this; cb.bind(self)(); }