Cómo extender una clase que utiliza un constructor de desestructuración en Typescript?
Mi pregunta es similar a esta, pero la clase que estoy intentando extender acepta un parámetro objeto.
Aquí está la clase que quiero extender:
class ThreeJSOverlayView implements google.maps.WebglOverlayView {
constructor({
anchor = { lat: 0, lng: 0, altitude: 0 },
rotation = new Float32Array([0, 0, 0]),
scale = new Float32Array([1, 1, 1]),
scene = new Scene(),
map,
}: ThreeJSOverlayViewOptions) {
//cuerpo del constructor...
}
//resto del código
}
Estoy extendiendo la clase solo para agregar el siguiente método que me permite leer algunos valores (cámara) que están protegidos por la clase original.
getCameraMatrices():Matrix4{
return this.camera.projectionMatrix;
}
He intentado extender la clase sin implementar el constructor, pero no funcionó. Intenté lo siguiente pero no funcionó
export class CustomeThreeOverlay extends ThreeJSOverlayView{
constructor(options: ThreeJSOverlayViewOptions){
super(options)
}
getCameraMatrices():Matrix4{
return this.camera.projectionMatrix;
}
}
Puede encontrar el código completo para la clase que estoy intentando extender aquí.
davy.ai
Para extender la clase
ThreeJSOverlayView
y agregar el métodogetCameraMatrices
, necesita implementar el constructor en su subclaseCustomThreeOverlay
. El constructor en su subclase debe pasar el parámetrooptions
al constructor de la superclase usando la palabra clavesuper
, tal como lo hizo en su ejemplo de código. Aquí está el código corregido:Esto debería funcionar, siempre y cuando el constructor de
ThreeJSOverlayView
inicialice la propiedadthis.camera
, que se utiliza en el métodogetCameraMatrices
.