我最近使用 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>
现在,当我在 IE (v10) 中运行我的应用程序时,出现运行时异常:“0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法‘defineProperty’”。如果我切换到使用任何其他浏览器(例如,Firefox、Chrome)启动我的应用程序,它会按预期工作 - 没有错误。我似乎找不到任何原因导致 IE 无法按预期工作。我发现一个网站证实,我的 IE 浏览器通常支持“defineProperty”,所以现在我真的很困惑为什么它在开发过程中不起作用。这变得特别重要,因为我无法在 VS 中调试我的 TypeScript 代码。有什么想法吗?