ByteBlocks
ByteBlocks

Reputation: 637

Javascript error in Typescript generated JS in IE11

I am getting following error from a simple module/class in typescript when I load page in IE11. The error does not happen in other browsers like Edge and Chrome.

JavaScript critical error at line 4, column 5 in clock.js SCRIPT1002: Syntax error

Here is TS code.

module DateTime {
    export class TestMe {
        private timeNow:Date;
        constructor() {
            alert("Hello");
        }
    }
}

And here is JS code generated from it.

var DateTime;
(function (DateTime) {
    class TestMe {
        constructor() {
            alert("Hello");
        }
    }
    DateTime.TestMe = TestMe;
})(DateTime || (DateTime = {}));

This is how this is getting invoked on page.

<script type="text/javascript">
            $(document)
                .ready(function() {
                        var testIt = new DateTime.TestMe();
                    }
                );
    </script>

From the debugger I can see that it is not liking "class" keyword in JS code. Page does not even get to create instance of "TestMe" because syntax error in clock.js does not let that file load. Is there anything that I need to include for it to work in IE11? I have tried to incluse es6 shim as well but same issue.

Thanks for any input on this issue.

Upvotes: 5

Views: 12962

Answers (2)

Tuvia
Tuvia

Reputation: 869

Your compiler still seems to be compiling to es6 code which IE11 does not support

Try changing your compiler options to compile down to es5.

Upvotes: 8

ssube
ssube

Reputation: 48277

IE 11 does not support the class keyword and language features, according to the compatibility table.

You can force the Typescript compiler to output code that will be compatible with an older version of JavaScript using the --target option or equivalent in your build. Otherwise, you'll need to run the TS output through another transpiler (such as Babel) to produce ES5 that will run under IE.

Upvotes: 19

Related Questions