使用get set“退出代码1”编译TypeScript错误代码

时间:2012-10-07 16:08:41

标签: javascript typescript

get topLeft()      { return this._topLeft;             }

set topLeft(value) {  this._topLeft = value; Recalc(); }

上面的代码可以在TypeScript Play中找到,但是我收到了构建错误 从Visual Studio 2012 error "exited with code 1"

编译时

有没有人尝试过get,在TypeScript中设置并成功构建?

2 个答案:

答案 0 :(得分:19)

您需要定位ECMAScript v5,即将-target ES5参数传递给编译器。这需要在项目文件目标配置中设置。

我不知道VS是否有任何内置机制来编辑目标配置,所以我只能告诉你如何手动完成。只需打开.csproj项目文件,查找TypeScript编译器命令所在的Target节点,然后添加-target ES5参数。

在我的配置中,它看起来像这样:

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

<强>更新

从版本0.8.1.0开始,已删除硬编码版本依赖项并添加了对源映射的支持,因此Target节点现在默认显示为:

<Target Name="BeforeBuild">
    <Message Text="Compiling TypeScript files" />
    <Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
    <Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
</Target>

注入target参数仍然非常简单,只需将其放在tsc$(TypeScriptSourceMap)之后:

<Message Text="Executing tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
<Exec Command="tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />

答案 1 :(得分:9)

截至0.8.2还有另一个变化。一些常见的TypeScript构建内容已从.csproj移至外部构建文件。像这样:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />

您的.csproj仍然可以通过将它们包含在构建中的元素中来设置TypeScript构建的一些参数。其中一个元素是ES版本。模板为我创建了两个组,一个用于调试,一个用于发布:

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

获得所需效果只需将ES3更改为ES5

为了更深入地了解这最终如何作为对TypeScript编译器的调用的一部分,请查看Microsoft.TypeScript.targets文件。

祝你好运,