Typescript - aceptar keyof de la clase hija en una función de la clase base
Tengo una función en mi clase base que toma el nombre de una propiedad para observar:
class Parent {
listenTo(prop: keyof this);
}
Luego tengo una clase hija, a la que quiero observar una de sus propias propiedades
class Child extends Parent {
foo = 3;
constructor() {
this.listenTo('foo');
}
}
Pero esto no funciona. Se queja de que 'foo' no es una de las claves válidas, y luego solo lista las claves de Parent, no de child. ¿Hay alguna manera de hacer que la declaración de la función en Parent observe el tipo real, y no solo a sí misma?
Respuesta #1
Probarlo ahora en el playground parece funcionar, pero necesitarás una llamada super:
class Parent {
listenTo(prop: keyof this) {}
}
class Child extends Parent {
foo = 3;
constructor() {
super();
this.listenTo('foo'); // ok
this.listenTo('foo2'); // error
}
}
Área de juego de TypeScript
Asegúrate de que la versión de TypeScript esté actualizada
