【问题标题】:Targeting ES5 with TypeScript in Visual Studio在 Visual Studio 中使用 TypeScript 定位 ES5
【发布时间】:2012-09-30 10:24:41
【问题描述】:

我想在 Visual Studio Express for Web 中的 TypeScript 中使用 get/set 语法。我该如何启用它。我目前在编译时遇到此错误;

属性访问器仅在面向 ES5 或更高版本时可用

正在编译的文件具有TypeScriptCompile 的构建操作。我不知道如何从 Visual Studio 中添加必要的编译器开关。

任何帮助将不胜感激。

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您需要将 -target ES5 传递给编译器。使用项目文件中的 msbuild 任务触发编译。您的项目文件可能有一个“TypeScriptCompile”目标,就像下面的 onr 一样,只需确保传递了目标参数。这是一个例子:

    <Target Name="TypeScriptCompile" BeforeTargets="Build">
       <Message Text="Compiling TypeScript files" />
       <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; -target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
    </Target>
    

    【讨论】:

      【解决方案2】:

      指示 TSC.EXE 生成 ES5 兼容代码的开关是 --target ES5(注意双破折号)。

      每个项目都有一个名为 [Something].csproj 的文件(在我们的例子中是 C# 项目)。使用记事本打开该文件并查找 Target xml 元素。通过添加 --target ES5 来更改 exec 命令。

      之前:

       <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
      

      之后:

      <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; --target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
      

      【讨论】:

      • 这就是我的结果。这包括 ES5 目标、AMD 模块和源映射的标志。基本上,浏览器开发所需的东西。
      【解决方案3】:

      使用Studio 2012,项目模板类型TypeScript构建,在项目csproj文件中设置为ES3

      ES3

      将其改为ES3到ES5,保存并重新加载项目。

      【讨论】:

      • 我这样做了,现在我得到了错误"tsc.exe" exited with code 1.
      【解决方案4】:

      这在 TypeScript 0.8.2 中发生了变化。您现在将 .csproj 文件中的 TypeScriptTarget 更改为:

      <TypeScriptTarget>ES3</TypeScriptTarget>
      

      到

      <TypeScriptTarget>ES5</TypeScriptTarget>
      

      MyApp.csproj:

        <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
          <TypeScriptTarget>ES5</TypeScriptTarget>
          <TypeScriptIncludeComments>true</TypeScriptIncludeComments>
          <TypeScriptSourceMap>true</TypeScriptSourceMap>
          <TypeScriptModuleKind>AMD</TypeScriptModuleKind>
        </PropertyGroup>
      
        <PropertyGroup Condition="'$(Configuration)' == 'Release'">
          <TypeScriptTarget>ES5</TypeScriptTarget>
          <TypeScriptIncludeComments>false</TypeScriptIncludeComments>
          <TypeScriptSourceMap>false</TypeScriptSourceMap>
          <TypeScriptModuleKind>AMD</TypeScriptModuleKind>
        </PropertyGroup>
      

      另见Asher Barak answer

      【讨论】:

        【解决方案5】:

        我正在使用带有 Web Essentials 的 Visual Studio 2013 Update 4。 Microsoft 使更改目标 ECMAScript 版本变得更加容易。

        您现在可以执行以下操作:

        1. 右键单击您的项目名称,然后单击属性。
        2. 在“属性”窗口中选择“Typescript Build”
        3. 将 ECMAScript 版本设置为“ECMAScript 5”。

        我相信 ECMAScript 5 目前是默认的。您目前也可以选择 ECMAScript 3 或 ECMAScript 6 作为目标。

        【讨论】:

        • 这是最好的答案
        猜你喜欢
        • 2018-04-19
        • 1970-01-01
        • 2016-10-31
        • 2020-12-09
        • 2014-06-08
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多