Reputation: 637
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
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
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