Tengo algunos problemas con IE11 y una clase de JavaScript estático que escribí.

El error que recibo es:

SCRIPT1002: error de sintaxis rgmui.box.js (6,1)

Lo que apunta a:

// ===========================================
// RGMUI BOX
// Static class

class RgMuiBox {
^

¿Entonces supongo que estoy definiendo esta clase de manera incorrecta? ¿Cuál es la forma correcta de hacer esto?

Encontré una publicación en SO que parece señalar que el problema es ES5 vs ES6, y me imagino que IE11 no es compatible con ES6.

Solo para completar, esto es lo que tengo (simplificado):

class RgMuiBox {
    static method1() {
    // .. code ..
    }
}

¡Gracias!

29
REJH 12 may. 2016 a las 20:54

3 respuestas

La mejor respuesta

Odio volver a abrir un problema tan antiguo, pero aún se muestra alto en los resultados, así que agregaré lo que descubrí:

Para reiterar lo que dijeron @Mikey y @REJH, IE11 no reconoce las clases.

Dicho esto, herramientas como Babel le permitirán traducir clases en algo que se ejecutará en IE11.

28
user8576017 18 sep. 2017 a las 16:17

@Mikey tiene razón. IE11 no reconoce esta sintaxis para las clases porque la especificación ES6: https://kangax.github.io/compat-table/es6/

class RgMuiBox {
    static method1() {
    // .. code ..
    }
}

Todavía no estoy seguro de si la siguiente es la forma correcta de definir una clase estática, pero funciona:

var RgMuiBox = {};
  RgMuiBox.method = function() {
    // ....
  }

Solo poniéndolo aquí para que esta pregunta tenga algún tipo de respuesta que pueda ayudar a las personas a ponerse en marcha. ¡Si hay alternativas a las anteriores, me gustaría escucharlas!

7
REJH 16 ago. 2016 a las 14:03

Ejemplo de clase estática

var _createClass = (function () {
    function defineProperties(target, props) {
        for (var i = 0; i < props.length; i++) {
            var descriptor = props[i];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor) descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
        }
    }
    return function (Constructor, protoProps, staticProps) {
        if (protoProps) defineProperties(Constructor.prototype, protoProps);
        if (staticProps) defineProperties(Constructor, staticProps);
        return Constructor;
    };
})();

function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
    }
}

var StaticClass = (function () {
    function StaticClass() {
        _classCallCheck(this, StaticClass);
    }

    _createClass(StaticClass, null, [{
        key: "method1",
        value: function method1() {
            // .. code ..
        }
    }]);

    return StaticClass;
 })();
1
Ed Randall 10 oct. 2019 a las 11:32