我最近为使用Visual Studio的相对复杂的模拟引擎创建了一个TypeScript项目,默认情况下,它是目标ECMAScript 3(ES3)。我想开始我的打字稿类中使用的不动产,所以我更新了我的项目文件到目标ES5,就像这样:TypeScript - 对象不支持属性或方法'defineProperty'
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptRemoveComments>false</TypeScriptRemoveComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptRemoveComments>true</TypeScriptRemoveComments>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
</PropertyGroup>
现在,当我在IE(V10)运行我的申请,我得到一个运行时异常:“0x800a01b6 - JavaScript运行时错误:对象不支持属性或方法'defineProperty'”。如果我改用任何其他浏览器(例如Firefox,Chrome)启动我的应用程序,它会按预期工作 - 没有错误。我似乎无法找到任何理由为什么IE没有按预期工作。我发现一个网站证实,一般来说,我的IE浏览器支持'defineProperty',所以现在我真的很困惑为什么它在开发过程中不起作用。由于我无法在VS中调试我的TypeScript代码,因此这变得特别重要。有什么想法吗?
IE10是否在IE8兼容模式下运行您的代码? – serg10
你钉了它。更改兼容模式(可能结合清除缓存)使其工作。由于它在启动和加载脚本时会抛出许多异常,因此我甚至无法检查IE的状态,直到我将所有TypeScript引用注释掉。感谢您的答复。 – 7dino7