<?xml version="1.0" encoding="utf-8"?>
<!--Copyright, Microsoft Corporation, All rights reserved.-->
<Rule Name="TypeScriptBuild" DisplayName="TypeScript 建置" PageTemplate="generic" Description="TypeScript 建置" xmlns="http://schemas.microsoft.com/build/2009/properties">

  <Rule.Categories>
    <Category Name="TypeScriptBuild" DisplayName="TypeScript 建置"/>
  </Rule.Categories>

  <Rule.DataSource>
    <DataSource Persistence="ProjectFile" Label="Configuration"/>
  </Rule.DataSource>

  <DynamicEnumProperty Name="TypeScriptToolsVersion" DisplayName="TypeScript 版本" Category="TypeScriptBuild" Description="要使用的 TypeScript 編譯器版本" EnumProvider="AvailableTypeScriptVersions"/>

  <EnumProperty Name="TypeScriptTarget" DisplayName="ECMAScript 版本" Category="TypeScriptBuild" Description="產生之 JavaScript 所要使用的 ECMAScript 版本">
    <EnumValue Name="ES3" DisplayName="ECMAScript 3"/>
    <EnumValue Name="ES5" DisplayName="ECMAScript 5"/>
    <EnumValue Name="ES6" DisplayName="ECMAScript 6"/>
    <EnumValue Name="ES2016" DisplayName="ECMAScript 2016"/>
    <EnumValue Name="ES2017" DisplayName="ECMAScript 2017"/>
    <EnumValue Name="ESNext" DisplayName="ECMAScript Next"/>
  </EnumProperty>

  <EnumProperty Name="TypeScriptCompileOnSaveEnabled" DisplayName="儲存時編譯" Category="TypeScriptBuild" Description="儲存時重新編譯來源">
    <EnumValue Name="true" DisplayName="是"/>
    <EnumValue Name="false" DisplayName="否"/>
  </EnumProperty>

  <EnumProperty Name="TypeScriptNoImplicitAny" DisplayName="允許隱含的 'any' 類型" Category="TypeScriptBuild" Description="不顯示對具有隱含 Any 類型之運算式與宣告的警告">
    <EnumValue Name="false" DisplayName="是"/>
    <EnumValue Name="true" DisplayName="否"/>
  </EnumProperty>

  <EnumProperty Name="TypeScriptModuleKind" DisplayName="模組系統" Category="TypeScriptBuild" Description="外部模組程式碼產生目標">
    <EnumValue Name="none" DisplayName="無"/>
    <EnumValue Name="amd" DisplayName="AMD"/>
    <EnumValue Name="commonjs" DisplayName="CommonJS"/>
    <EnumValue Name="umd" DisplayName="UMD"/>
    <EnumValue Name="system" DisplayName="系統"/>
  </EnumProperty>

  <EnumProperty Name="TypeScriptRemoveComments" DisplayName="在 JavaScript 輸出中保留註解" Category="TypeScriptBuild" Description="將註解發至輸出">
    <EnumValue Name="false" DisplayName="是"/>
    <EnumValue Name="true" DisplayName="否"/>
  </EnumProperty>

  <StringProperty Name="TypeScriptOutFile" DisplayName="將 JavaScript 輸出合併至檔案" Category="TypeScriptBuild" Description="將輸出重新導向至檔案"/>

  <StringProperty Name="TypeScriptOutDir" DisplayName="將 JavaScript 輸出重新導向至目錄" Category="TypeScriptBuild" Description="將輸出重新導向至不同於來源的目錄"/>

  <EnumProperty Name="TypeScriptGeneratesDeclarations" DisplayName="產生宣告檔案" Category="TypeScriptBuild" Description="產生對應的 d.ts 檔案">
    <EnumValue Name="true" DisplayName="是"/>
    <EnumValue Name="false" DisplayName="否"/>
  </EnumProperty>

  <EnumProperty Name="TypeScriptSourceMap" DisplayName="產生來源對應" Category="TypeScriptBuild" Description="產生對應的 .map 檔案">
    <EnumValue Name="true" DisplayName="是"/>
    <EnumValue Name="false" DisplayName="否"/>
  </EnumProperty>

  <StringProperty Name="TypeScriptMapRoot" DisplayName="指定來源對應的根目錄" Category="TypeScriptBuild" Description="發出 sourcemap，以便偵錯時，可以在 sourcemap 根目錄中找到 sourcemap。"/>

  <StringProperty Name="TypeScriptSourceRoot" DisplayName="指定 TypeScript 檔案的根目錄" Category="TypeScriptBuild" Description="發出 sourcemap，以便偵錯時，可以在來源根目錄中找到來源。"/>

  <EnumProperty Name="TypeScriptNoEmitOnError" DisplayName="錯誤時發出" Category="TypeScriptBuild" Description="如果回報任何錯誤，則發出輸出">
    <EnumValue Name="true" DisplayName="否"/>
    <EnumValue Name="false" DisplayName="是"/>
  </EnumProperty>

  <EnumProperty Name="TypeScriptJSXEmit" DisplayName=".tsx 檔的編譯模式" Category="TypeScriptBuild" Description="為 .tsx 檔指定 JSX 程式碼編譯模式，這不會影響 .ts 檔">
    <EnumValue Name="none" DisplayName="無"/>
    <EnumValue Name="preserve" DisplayName="保留 JSX 項目"/>
    <EnumValue Name="react" DisplayName="針對 JSX 項目發出 React 呼叫"/>
  </EnumProperty>
</Rule>
