我最近使用Visual Studio为相对复杂的模拟引擎创建了一个TypeScript项目,默认情况下,它针对ECMAScript 3(ES3).我想在我的TypeScript类中开始使用真实属性,所以我将我的项目文件更新为目标ES5,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
现在当我在IE(v10)中运行我的应用程序时,我得到一个运行时异常:"0x800a01b6 - JavaScript运行时错误:对象不支持属性或方法'defineProperty'".如果我切换到使用任何其他浏览器(例如,Firefox,Chrome)启动我的应用程序,它会按预期工作 - 没有错误.我似乎无法找到任何理由为什么IE没有按预期工作.我发现一个网站确认,一般来说,我的IE浏览器支持'defineProperty',所以现在我真的很困惑为什么它在开发过程中不起作用.由于我无法在VS中调试我的TypeScript代码,因此这一点变得尤为重要.有什么想法吗?