TS編譯設(shè)置和配置文件屬性解讀

1. 編譯選項(xiàng)

1.1 自動(dòng)編譯文件

  • 編譯文件時(shí),使用-w指令后,TS編譯器會(huì)自動(dòng)監(jiān)視文件的變化,并在文件發(fā)生變化時(shí)重新編譯。

  • 示例

    tsc xxx.ts -w
    

1.2 自動(dòng)編譯整個(gè)項(xiàng)目

  • 如果直接使用tsc指令,就可以自動(dòng)將當(dāng)前項(xiàng)目下的所有ts文件編譯為js文件

  • 直接使用tsc指令的前提是,要在項(xiàng)目根目錄下創(chuàng)建一個(gè)ts的配置文件 tsconfig.json

    tsc --init
    

如果直接執(zhí)行 tsc命令,只是一次性生成 所有的js文件

如果直接執(zhí)行 tsc -w 命令,它會(huì)生成所有的js文件,并且還會(huì)去監(jiān)視,只有對(duì)應(yīng)的文件發(fā)生變化,就會(huì)自動(dòng)去重新編譯生成

1.3 tsconfig.json文件

它是ts編譯器的配置文件,可以根據(jù)它的信息,對(duì)代碼進(jìn)行編譯。

1.3.1 外層屬性
  • include:用于指定哪些ts文件需要進(jìn)行編譯

    • **:任意目錄
    • *:任意文件
    include:[
        "./src/**/*"
    ]
    
    • 以上表示根目錄下的src目錄下的任意目錄的任意文件,需要進(jìn)行編譯
  • exclude:用于指定哪些ts文件不需要進(jìn)行編譯

    • 默認(rèn)值:["node_modules","bower_components",‘jspm_packages“]
      "exclude": ["./src/hello/*"],
    
  • extends

    • 定義被繼承的配置文件

    • "extends":"./configs/base"
      
    • 上述示例中,當(dāng)前配置文件中會(huì)自動(dòng)包含config目錄下base.json中的所有配置信息。

  • files:設(shè)置文件,設(shè)置哪些文件需要被編譯

    • files:[
          "xxx.ts"
      ]
      
  • compilerOptions:是ts編譯器的選項(xiàng)

1.3.2 compilerOptions屬性
  • target:用來指定ts被編譯成ES的版本

    • 默認(rèn)是es3

    • 可選值

      'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 
      
  • module:指定哪種版本的模塊化

    'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
    

    給一個(gè)錯(cuò)誤的值,就可以看到可以支持哪些版本的模塊化

  • lib :用來指定項(xiàng)目中使用的庫(kù)

    •   "lib": ["DOM"], 
      
    • 比如上面的DOM,如果沒有指定,則不會(huì)使用Dom的相關(guān)方法【也就是document的相關(guān)方法和屬性】,也不會(huì)有任何的提示。

    • 給定一個(gè)錯(cuò)誤的值,可以看到可以使用哪些庫(kù)

  • outDir:用于指定編譯后js文件的所在目錄

    "outDir": "js",  
    
    • 輸出到根目錄下的js目錄下【沒有這個(gè)目錄,會(huì)自動(dòng)創(chuàng)建】
  • outFile:將所有的全局作用域中的代碼合并懂同一個(gè)文件中

    Only 'amd' and 'system' modules are supported alongside --outFile. 
    
  • allowJs:是否對(duì)js文件進(jìn)行編譯,默認(rèn)為false

  • checkJs:是否檢查js代碼是否符合語法規(guī)范

  • removeComments:是否移除注釋

  • noEmit:是否不生成編譯后的文件

  • noEmitOnError:當(dāng)有錯(cuò)誤時(shí)不生成編譯后的文件

  • alwaysStrict:用來設(shè)置編譯后的文件是否使用嚴(yán)格模式,默認(rèn)為false

    • 當(dāng)有模塊化代碼的時(shí)候,默認(rèn)就有嚴(yán)格模式了。

  • noImplicitAny:不允許隱式any

  • noImplicitThis:不允許不明確類型的this,【默認(rèn)為true】

  • strictNullChecks:嚴(yán)格檢查空值

  • strict:所有嚴(yán)格模式的總開關(guān)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容