Búsqueda de sitios web

javascript - ¿Por qué declarar una variable en la clase, incluso asignando esa variable a this en el constructor?


En el código a continuación, como puedes ver, declaré una variable constObj en la clase Test. Y al mismo tiempo asignando el objeto constObj a this en el constructor.

¿Por qué necesitamos declarar la variable de nuevo, aunque ya la estemos asignando a this en el constructor?

En el IDE webstorm, está lanzando el error doesn't have the property constObj si hago this.constObj, si la variable no está declarada. Pero el código funciona bien sin problemas.

¿Es obligatorio declarar la variable, incluso si la estamos asignando a this?

const constObj = {
  a: function() {
    console.log("sivakumar");
  }
};

class Test {
  constObj: any; // Is this line mandatory? I mean declaring it???

  constructor() {
    Object.assign(this, {
      constObj
    });
  }

  callMethod() {
    this.constObj.a();
  }
}

new Test().callMethod();

Por favor, déjeme saber qué pasará si no declaramos.

Respuesta #1

Es obligatorio declarar la variable...

No es una variable, es una propiedad.

La respuesta para TypeScript: Sí, es obligatorio, para que TypeScript sepa que Test tiene esa propiedad a efectos de realizar sus verificaciones de tipo estático. (Tenga en cuenta que la forma en que lo ha hecho es solo una de las posibles maneras de declarar esa propiedad. Pero sí necesita declararla.)

La respuesta para JavaScript: No, no es obligatorio¹, porque JavaScript no realiza verificaciones de tipo estáticas.

¹ (y no es posible según la especificación actual, pero pronto lo será y comúnmente se transpila con herramientas como Babel)

Artículos relacionados