亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

TypeScript 編譯選項

TypeScript 提供了很多不同功能的編譯選項,既可以通過配置 tsconfig.json 文件中的 compilerOptions 屬性來實現編譯,也可以使用在 tsc 命令后跟隨參數這形式,直接編譯 .ts 文件。

注意: 當命令行上指定了輸入文件時,tsconfig.json 文件會被忽略。

1. 慕課解釋

我們通過編譯選項 --watch 為例,在當前目錄創建 main.ts 文件,寫入內容:

enum Season {
  Spring,
  Summer,
  Autumn,
  Winter
}

在命令行執行:

tsc main.ts --watch

編譯選項 --watch 使編譯器在監視模式下運行,會監視輸出文件,在它們改變時重新編譯。

2. 編譯選項

選項 類型 默認值 描述
–allowJs boolean false 允許編譯 JavaScript 文件
–allowSyntheticDefaultImports boolean false 允許從沒有設置默認導出的模塊中默認導入
–allowUnreachableCode boolean false 不報告執行不到的代碼錯誤
–allowUnusedLabels boolean false 不報告未使用的標簽錯誤
–alwaysStrict boolean false 以嚴格模式解析并為每個源文件生成 "use strict" 語句
--baseUrl string 解析非相對模塊名的基準目錄
–charset string “utf8” 輸入文件的字符集
–checkJs boolean false .js 文件中報告錯誤,與 --allowJs 配合使用
–declaration
-d
boolean false 生成相應的 .d.ts 文件
–declarationDir string 生成聲明文件的輸出路徑
–diagnostics boolean false 顯示診斷信息
–disableSizeLimit boolean false 禁用 JavaScript 工程體積大小的限制
–emitBOM boolean false 在輸出文件的開頭加入BOM頭(UTF-8 Byte Order Mark)
–emitDecoratorMetadata[1] boolean false 給源碼里的裝飾器聲明加上設計類型元數據。查看 issue #2577 了解更多信息。
–experimentalDecorators[1] boolean false 啟用實驗性的ES裝飾器
–extendedDiagnostics boolean false 顯示詳細的診斷信息
–forceConsistentCasingInFileNames boolean false 禁止對同一個文件的不一致的引用
–help
-h
打印幫助信息
–importHelpers string tslib 導入輔助工具函數(比如 __extends, __rest等)
–inlineSourceMap boolean false 生成單個 sourcemaps 文件,而不是將每 sourcemaps 生成不同的文件
–inlineSources boolean false 將代碼與 sourcemaps 生成到一個文件中,要求同時設置了 --inlineSourceMap--sourceMap 屬性
--init 初始化 TypeScript 項目并創建一個 tsconfig.json 文件
–isolatedModules boolean false 將每個文件作為單獨的模塊(與 “ts.transpileModule” 類似)
–jsx string “Preserve” .tsx 文件里支持 JSX: “React” 或 “Preserve”。
–jsxFactory string “React.createElement” 指定生成目標為 react JSX 時,使用的 JSX 工廠函數,比如 React.createElement 或 h
–lib string[] 編譯過程中需要引入的庫文件的列表。
可能的值為:
? ES5
? ES6
? ES2015
? ES7
? ES2016
? ES2017
? ES2018
? ESNext
? ES5
? ES5
? ES5
? ES5
? ES5
? ES5
? DOM
? DOM.Iterable
? WebWorker
? ScriptHost
? ES2015.Core
? ES2015.Collection
? ES2015.Generator
? ES2015.Iterable
? ES2015.Promise
? ES2015.Proxy
? ES2015.Reflect
? ES2015.Symbol
? ES2015.Symbol.WellKnown
? ES2016.Array.Include
? ES2017.object
? ES2017.Intl
? ES2017.SharedMemory
? ES2017.String
? ES2017.TypedArrays
? ES2018.Intl
? ES2018.Promise
? ES2018.RegExp
? ESNext.AsyncIterable
? ESNext.Array
? ESNext.Intl
? ESNext.Symbol

注意:如果 --lib 沒有指定默認注入的庫的列表。默認注入的庫為:
? 針對于 --target ES5DOM,ES5,ScriptHost
? 針對于 --target ES6DOM,ES6,DOM.Iterable,ScriptHost
–listEmittedFiles boolean false 打印出編譯后生成文件的名字
–listFiles boolean false 編譯過程中打印文件名
–locale string (platform specific) 顯示錯誤信息時使用的語言,比如:en-us
–mapRoot string 為調試器指定指定 sourcemap 文件的路徑,而不是使用生成時的路徑。當 .map 文件是在運行時指定的,并不同于 js 文件的地址時使用這個標記。指定的路徑會嵌入到 sourceMap 里告訴調試器到哪里去找它們
–maxNodeModuleJsDepth number 0 node_modules 依賴的最大搜索深度并加載 JavaScript 文件,僅適用于 --allowJs
–module
-m
string target === “ES6” ? “ES6” : “commonjs” 指定生成哪個模塊系統代碼: “None”, “CommonJS”, “AMD”, “System”, “UMD”, "ES6"或 “ES2015”。
? 只有 "AMD"和 "System"能和 --outFile一起使用。
? "ES6"和 "ES2015"可使用在目標輸出為 "ES5"或更低的情況下。
–moduleResolution string module === “AMD” or “System” or “ES6” ? “Classic” : “Node” 決定如何處理模塊。或者是 “Node” 對于 Node.js/io.js,或者是 “Classic”(默認)
–newLine string (platform specific) 當生成文件時指定行結束符: "crlf"(windows)或 "lf"(unix)
–noEmit boolean false 不生成輸出文件
–noEmitHelpers boolean false 不在輸出文件中生成用戶自定義的幫助函數代碼,如 __extends
–noEmitOnError boolean false 報錯時不生成輸出文件
–noErrorTruncation boolean false 不截短錯誤消息
–noFallthroughCasesInSwitch boolean false 報告 switch 語句的 fallthrough 錯誤。(即,不允許 switch 的 case 語句貫穿)
--noImplicitAny boolean false 在表達式和聲明上有隱含的 any 類型時報錯
–noImplicitReturns boolean false 不是函數的所有返回路徑都有返回值時報錯
–noImplicitThis boolean false this 表達式的值為 any 類型的時候,生成一個錯誤
–noImplicitUseStrict boolean false 模塊輸出中不包含 “use strict” 指令
–noLib boolean false 不包含默認的庫文件( lib.d.ts
–noResolve boolean false 不把 /// <reference``> 或模塊導入的文件加到編譯文件列表
–noStrictGenericChecks boolean false 禁用在函數類型里對泛型簽名進行嚴格檢查
–noUnusedLocals boolean false 若有未使用的局部變量則拋錯
–noUnusedParameters boolean false 若有未使用的參數則拋錯
--outDir string 重定向輸出目錄
–outFile string 將輸出文件合并為一個文件,合并的順序是根據傳入編譯器的文件順序和 ///<reference``>import 的文件順序決定的
–skipDefaultLibCheck boolean false 忽略庫的默認聲明文件的類型檢查
–skipLibCheck boolean false 忽略所有的聲明文件( *.d.ts )的類型檢查
--sourceMap boolean false 生成相應的 .map 文件
–sourceRoot string 指定 TypeScript 源文件的路徑,以便調試器定位。當 TypeScript 文件的位置是在運行時指定時使用此標記, 路徑信息會被加到 sourceMap 里
--strict boolean false 啟用所有嚴格類型檢查選項
–strictFunctionTypes boolean false 禁用函數參數雙向協變檢查
–strictPropertyInitialization boolean false 確保類的非 undefined 屬性已經在構造函數里初始化。若要令此選項生效,需要同時啟用 --strictNullChecks
--strictNullChecks boolean false 在嚴格的 null 檢查模式下,nullundefined 值不包含在任何類型里,只允許用它們自己和 any 來賦值(有個例外, undefined 可以賦值到 void)
–stripInternal[1] boolean false 不對具有 /** @internal */ JSDoc注解的代碼生成代碼
–suppressExcessPropertyErrors[1] boolean false 阻止對對象字面量的額外屬性檢查
–suppressImplicitAnyIndexErrors boolean false 阻止 --noImplicitAny 對缺少索引簽名的索引對象報錯。查看 issue #1232 了解詳情。
--target <br> -t string “ES3” 指定ECMAScript目標版本 "ES3"(默認), "ES5", "ES6"/ "ES2015", "ES2016", "ES2017""ESNext"

注意: "ESNext" 最新的生成目標列表為 ES proposed features
–traceResolution boolean false 生成模塊解析日志信息
–types string[] 要包含的類型聲明文件名列表
–typeRoots string[] 要包含的類型聲明文件路徑列表
--version <br> -v 打印編譯器版本號
–watch
-w
在監視模式下運行編譯器。會監視輸出文件,在它們改變時重新編譯。監視文件和目錄的具體實現可以通過環境變量進行配置
  • [1] 這些選項是試驗性的

3. 小結

本小節梳理了 TypeScript 的眾多編譯選項,可以先通讀一遍,大致了解有些什么功能,在項目中需要使用時再來查閱即可。