13
get topLeft()      { return this._topLeft;             }

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

上記のコードは TypeScript Play で動作しますが、Visual Studio 2012 からコンパイルするとビルド エラーが発生しました。error "exited with code 1"

誰もが TypeScript で get、set を試し、正常にビルドしようとしていますか?

4

2 に答える 2

19

ECMAScript v5 をターゲットにする必要があります。つまり、-target ES5引数をコンパイラに渡します。これは、プロジェクト ファイルのターゲット構成で設定する必要があります。

VSにターゲット構成を編集するためのメカニズムが組み込まれているかどうかはわかりません。そのため、手動で行う方法しか説明できません。プロジェクト ファイルを開き、TypeScript コンパイラ コマンドが配置されているノード.csprojを探し、引数を追加するだけです。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は非常に簡単で、tscorの後に置くだけです$(TypeScriptSourceMap):

<Message Text="Executing tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
<Exec Command="tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
于 2012-10-07T17:07:06.453 に答える
9

0.8.2 の時点で、別の変更がありました。一般的な TypeScript ビルドの一部は、.csproj から外部ビルド ファイルに移動されました。そのようです:

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

.csproj は、ビルドの要素としてそれらを含めることにより、TypeScript ビルドにいくつかの引数を設定することができます。これらの要素の 1 つが ES バージョンです。テンプレートによって、デバッグ用とリリース用の 2 つのグループが作成されました。

  <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 ファイルを参照してください。

幸運を、

于 2013-03-04T12:17:35.060 に答える