TypeScript 中的 tsconfig.json

什么是 tsconfig.json?

tsconfig.json 是 TypeScript 編譯器的配置文件,用于指導編譯器如何編譯 TypeScript 代碼。在 TypeScript 項目中,如果存在這個文件,那么在執行 tsc 命令時,編譯器將會使用該文件中定義的配置選項進行編譯。

結構和基本配置選項

讓我們先來看一下一個簡單的 tsconfig.json 文件的結構及其基本配置選項:

{"compilerOptions": {"target": "es5","module": "commonjs","outDir": "./dist","strict": true,"baseUrl": "./src","paths": {"*": ["*", "src/*"]},"allowJs": true,"noImplicitAny": true,"sourceMap": true},"include": ["src/**/*"],"exclude": ["node_modules", "**/*.spec.ts"]
}
  • compilerOptions:這是一個對象,包含了編譯器的各種選項。

    • target:指定編譯后的 JavaScript 代碼應該符合的 ECMAScript 標準版本。常見的值有 "es5", "es6", "es2015", "es2016" 等。這決定了編譯器生成的 JavaScript 代碼的語法特性。
    • module:指定生成的模塊化代碼的模塊系統。常見的值有 "commonjs", "amd", "es6", "umd" 等。它決定了編譯器如何將 TypeScript 的模塊轉換為 JavaScript 的模塊。
    • outDir:指定編譯后的 JavaScript 文件輸出目錄。編譯器會將編譯后的 JavaScript 文件輸出到指定的目錄中。
    • strict:啟用嚴格的類型檢查。當啟用時,編譯器會更嚴格地檢查類型,并發出更多的類型錯誤。
    • baseUrl:用于解析非相對模塊名稱的基本目錄。它指定了模塊名稱的基礎路徑,用于解析模塊的導入語句。
    • paths:指定模塊的路徑映射,用于模塊解析。可以為指定的模塊名稱提供自定義的解析路徑。
    • allowJs:允許編譯 JavaScript 文件。當啟用時,編譯器可以編譯項目中的 JavaScript 文件。
    • noImplicitAny:在表達式和聲明上有隱含的 any 類型時報錯。當啟用時,編譯器會在遇到隱含的 any 類型時發出警告或錯誤。
    • sourceMap:生成相應的 .map 文件,方便調試。啟用后,編譯器會生成與編譯后的 JavaScript 文件相對應的源映射文件,以便在調試時可以將編譯后的 JavaScript 代碼映射回原始的 TypeScript 代碼。
  • include:一個字符串數組,指定需要編譯的文件或文件夾的路徑模式。編譯器會編譯匹配這些模式的文件。

  • exclude:一個字符串數組,指定不需要編譯的文件或文件夾的路徑模式。編譯器會排除匹配這些模式的文件。

更多常用選項

除了上述基本配置選項外,tsconfig.json 還支持許多其他常用的選項,如下所示:

  • esModuleInterop:啟用 __importDefault__importStar 來支持 CommonJS 和 AMD 模塊之間的互操作性。
  • declaration:生成相應的 .d.ts 聲明文件。當啟用時,編譯器會為每個 TypeScript 文件生成一個對應的聲明文件。
  • strictNullChecks:啟用嚴格的 null 檢查。當啟用時,編譯器會檢查是否存在可能為 nullundefined 的值,并發出相應的警告或錯誤。
  • noUnusedLocalsnoUnusedParameters:檢測并報告未使用的局部變量和參數。
  • jsx:指定 JSX 語法的支持。常見的值有 "preserve", "react", "react-native" 等。
  • allowSyntheticDefaultImports:啟用允許默認導入來自沒有默認導出的模塊的內容。

使用 extends 繼承配置

有時候,在多個 TypeScript 項目中可能存在相同的配置選項。為了避免重復,可以使用 extends 選項來繼承另一個配置文件的配置:

{"extends": "./common-tsconfig.json","compilerOptions": {"outDir": "./build"}
}

通過 extends 選項,可以將當前配置文件繼承自另一個配置文件,并在此基礎上進行修改或添加額外的配置選項。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23872.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23872.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23872.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java】解決Java報錯:IllegalArgumentException

文章目錄 引言1. 錯誤詳解2. 常見的出錯場景2.1 非法的參數值2.2 空值或 null 參數2.3 非法的數組索引 3. 解決方案3.1 參數驗證3.2 使用自定義異常3.3 使用Java標準庫中的 Objects 類 4. 預防措施4.1 編寫防御性代碼4.2 使用注解和檢查工具4.3 單元測試 結語 引言 在Java編程…

【NPS】微軟NPS配置802.1x,驗證域賬號,動態分配VLAN(有線網絡續篇)

繼上一篇文章中成功實施了有線802.1x驗證域賬號并動態分配VLAN的策略之后,我們迎來了一個新的目標:在用戶驗證失敗時,自動分配一個Guest VLAN,以確保用戶至少能夠訪問基本的網絡服務。這一改進將顯著提升網絡的靈活性和用戶的上網…

書籍數字字符串轉換為字母組合的種數(4)0607

題目: 給定一個字符串str,str全部由數字字符組成,如果str中某一個或某相鄰兩個字符組成的子串值在1~26之間,則這個子串可以轉換為一個字母。規定“1”轉換為“A”,“2”轉換為“B”,“3”轉換成“C”……“…

Kafka的分區副本機制

目錄 生產者的分區寫入策略 輪詢策略 隨機策略 按key分配策略 亂序分區 自定義分區策略 實現步驟: 消費者組Rebalance機制 Rebalance觸發時機 Rebalance的不良影響 消費者分區分配策略 Range范圍分配策略 RoundRobin輪詢策略 Stricky粘性分配策略 生產…

計算機網絡-NAT配置與ACL

目錄 一、ACL 1、ACL概述 2、ACL的作用 3、ACL的分類 4、ACL的配置格式 二、NAT 1、NAT概述 2、NAT分類 2.1 、 靜態NAT 2.2 、 動態NAT 3、NAT的功能 4、NAT的工作原理 三、NAT配置 1、靜態NAT配置 2、動態NAT配置 四、總結 一、ACL 1、ACL概述 ACL&#xff…

讓編程變得更加直觀與高效 “JAVA圖形化編程”官網上線!

公測預約開啟 我們歷經了長達三年的時光,執著地堅守并潛心地進行探索,始終懷著一顆敬畏的心,最終極為謹慎地推出了這款圖形化編程桌面。它能夠使得業務與程序清晰明了地呈現,而且還能與傳統的低零代碼平臺實現緊密…

新品發布 | 飛凌嵌入式RK3576核心板,為AIoT應用賦能

為了充分滿足AIoT市場對高性能、高算力和低功耗主控日益增長的需求,飛凌嵌入式全新推出基于Rockchip RK3576處理器開發設計的FET3576-C核心板! 集成4個ARM Cortex-A72和4個ARM Cortex-A53高性能核,內置6TOPS超強算力NPU,為您的AI…

LeetCode 兩數之和 + 三數之和

兩數之和 簡單題 思路:一個Map,key是數值,value是該數值對應的下標,遍歷的時候判斷一下當前數組下標對應的值在map里有沒有可組合成target的(具體體現為在map里找target-nums【i】),如果有,直接…

IDEA使用阿里通義靈碼插件

在這個AI火熱的時代,純手工寫代碼已經有點out了,使用AI插件可以幫我們快速寫代碼,起碼能省去寫那些簡單、重復性的代碼,大大提高編碼效率,在這里我推薦使用阿里的通義靈碼 注冊安裝 安裝注冊好后,打開我們…

深入探索Spark MLlib:大數據時代的機器學習利器

隨著大數據技術的迅猛發展,機器學習在各行各業的應用日益廣泛。Apache Spark作為大數據處理的利器,其內置的機器學習庫MLlib(Machine Learning Library)提供了一套高效、易用的工具,用于處理和分析海量數據。本文將深入探討Spark MLlib,介紹其核心功能和應用場景,并通過…

【流媒體】音頻相關概念詳解

文章目錄 一、前言二、概述三、音頻相關概念1、采樣率(Sampling rate)2、位深度(Bit depth)3、比特率(Bit rate)4、聲道(Audio channel)5、音頻幀6、音頻編碼7、音頻解碼 一、前言 …

【vuejs】$nextTick的原理分析和使用場景

1. $nextTick 概述 Vue.js 框架中的 $nextTick 是一個非常重要的 API,它允許開發者延遲回調函數的執行直到下次 DOM 更新循環之后。這意味著,當開發者在 Vue 組件中更改了數據,并且想要在 DOM 更新完成后執行某些操作時,可以使用…

總結開發過程遇到問題有哪些渠道可以尋找解決方案

羅列一下 百度、ChatGPT/訊飛星火等AI、Stack Overflow、github isssue 平時開發過程遇到問題的主要解決方式都是百度或者詢問ChatGPT,當然在java中這兩個方式也能解決百分之80的問題,畢竟java的社區圈夠熱鬧。 如何優雅地使用 Stack Overflow 一、學…

搭建自己的DNS服務器

個人名片 🎓作者簡介:java領域優質創作者 🌐個人主頁:碼農阿豪 📞工作室:新空間代碼工作室(提供各種軟件服務) 💌個人郵箱:[2435024119qq.com] &#x1f4f1…

腺苷調節合成高密度脂蛋白用于三陰性乳腺癌的化學免疫治療

引用信息 文 章:Adenosine-modulating synthetic high-density lipoprotein for chemoimmunotherapy of triple-negative breast cancer 期 刊:Journal of Controlled Release(影響因子:10.8) 發表時間&am…

深入探索:十種流行的深度神經網絡及其運作原理

算法 深入探索:十種流行的深度神經網絡及其運作原理一、卷積神經網絡(CNN)基本原理工作方式 二、循環神經網絡(RNN)基本原理工作方式 三、長短期記憶網絡(LSTM)基本原理工作方式 四、門控循環單…

jupyter notebook默認工作目錄修改

jupyter notebook默認工作目錄修改 1、問題2、如何修改jupyter notebook默認工作目錄 1、問題 anaconda安裝好之后,我們啟動jupyter notebook會發現其默認工作目錄是在C盤,將工作目錄放在C盤會讓C盤很快被撐爆,我們應該將jupyter notebook默…

進階篇01——存儲引擎

MySQL體系結構 存儲引擎 引擎有多種類型,MySQL支持多種存儲引擎,默認的存儲引擎為innodb。不同的存儲引擎有不同的特點,適用不同的場景。 innodb存儲引擎 簡介 innodb的邏輯存儲結構 MYISAM存儲引擎 memory存儲引擎 三種引擎特點對比&…

2024華為數通HCIP-datacom最新題庫(變題更新③)

請注意,華為HCIP-Datacom考試831已變題 請注意,華為HCIP-Datacom考試831已變題 請注意,華為HCIP-Datacom考試831已變題 近期打算考HCIP的朋友注意了,如果你準備去考試,還是用的之前的題庫,切記暫緩。 1、…

融合創新:Web3如何重新定義網絡生態

隨著區塊鏈技術的不斷發展和Web3時代的到來,我們正在見證著互聯網生態的巨大變革。Web3將傳統的互聯網架構轉變為去中心化、開放、透明的新網絡生態,為創新和合作提供了全新的可能性。本文將深入探討Web3如何重新定義網絡生態,探索融合創新的…