TypeScript 配置參數詳解 (tsconfig.json)

文章目錄

  • 前言
  • 核心配置
    • 基本選項
    • 嚴格類型檢查選項
    • 模塊解析選項
    • Source Map 選項
    • 實驗性選項
    • 其他選項
    • 文件包含/排除選項
  • 詳細用法示例
  • 最佳實踐建議


在這里插入圖片描述

前言

tsconfig.json 是 TypeScript 項目的配置文件,用于指定編譯選項和文件包含規則。以下是所有主要配置參數的中文詳解:


核心配置

compilerOptions (編譯器選項)

基本選項

  • target: 指定編譯后的 JavaScript 目標版本 (如"esnext", “es5”, “es6”, “es2015”, “es2020” 等)
  • module: 指定模塊系統 (如 “commonjs”, “amd”, “es2015”, “esnext” 等)
  • lib: 指定要包含的庫文件聲明 (如 [ “esnext”, “es5”, “es6”, “dom”])
  • allowJs: 允許編譯 JavaScript 文件 (true/false)
  • checkJs: 在 JavaScript 文件中報告錯誤 (true/false)
  • jsx: 指定 JSX 代碼生成方式 (“preserve”, “react”, “react-jsx”, “react-jsxdev” 等)
  • declaration: 生成對應的 .d.ts 聲明文件 (true/false)
  • declarationMap: 為聲明文件生成 sourcemap (true/false)
  • sourceMap: 生成對應的 .map 文件 (true/false)
  • outFile: 將所有輸出合并為一個文件 (僅適用于 module 為 “amd” 或 “system”)
  • outDir: 指定輸出目錄
  • rootDir: 指定輸入文件的根目錄
  • composite: 啟用項目編譯 (true/false)
  • incremental: 啟用增量編譯 (true/false)
  • tsBuildInfoFile: 指定增量編譯信息文件的路徑

嚴格類型檢查選項

  • strict: 啟用所有嚴格類型檢查選項 (true/false)
  • noImplicitAny: 禁止隱式 any 類型 (true/false)
  • strictNullChecks: 啟用嚴格的 null 檢查 (true/false)
  • strictFunctionTypes: 啟用嚴格的函數類型檢查 (true/false)
  • strictBindCallApply: 對 bind, call, apply 方法進行嚴格檢查 (true/false)
  • strictPropertyInitialization: 確保類的屬性已初始化 (true/false)
  • noImplicitThis: 禁止隱式 any 類型的 this (true/false)
  • alwaysStrict: 以嚴格模式解析并為每個源文件生成 “use strict” (true/false)

模塊解析選項

  • moduleResolution: 指定模塊解析策略 (“node” 或 “classic”)
  • baseUrl: 解析非相對模塊名的基準目錄
  • paths: 設置模塊名到基于 baseUrl 的路徑映射
  • rootDirs: 將多個目錄合并為一個虛擬目錄
  • typeRoots: 指定類型定義文件的目錄列表
  • types: 指定要包含的類型聲明文件包
  • allowUmdGlobalAccess: 允許從模塊訪問 UMD 全局變量 (true/false)
  • resolveJsonModule: 允許導入 JSON 模塊 (true/false)
  • preserveSymlinks: 不解析符號鏈接的真實路徑 (true/false)

Source Map 選項

  • sourceRoot: 指定調試器應該定位的 TypeScript 文件位置
  • mapRoot: 指定調試器應該定位的 map 文件位置
  • inlineSourceMap: 將 sourcemap 嵌入到生成的 JS 文件中 (true/false)
  • inlineSources: 將源代碼與 sourcemaps 一起嵌入到單個文件中 (true/false)

實驗性選項

  • experimentalDecorators: 啟用實驗性裝飾器支持 (true/false)
  • emitDecoratorMetadata: 為裝飾器提供元數據支持 (true/false)

其他選項

  • importHelpers: 從 tslib 導入輔助工具函數 (true/false)
  • downlevelIteration: 為迭代器提供更準確的降級支持 (true/false)
  • isolatedModules: 確保每個文件都可以安全地獨立編譯 (true/false)
  • allowSyntheticDefaultImports: 允許從沒有默認導出的模塊進行默認導入 (true/false)
  • esModuleInterop: 啟用更兼容的 CommonJS/AMD/UMD 模塊導入導出 (true/false)
  • forceConsistentCasingInFileNames: 強制文件名大小寫一致 (true/false)
  • skipLibCheck: 跳過聲明文件的類型檢查 (true/false)
  • noEmit: 不生成輸出文件 (true/false)
  • noEmitOnError: 當有錯誤時不生成輸出文件 (true/false)
  • noEmitHelpers: 不生成輔助函數,需手動引入 (true/false)
  • noImplicitReturns: 函數中所有代碼路徑必須返回值 (true/false)
  • noFallthroughCasesInSwitch: 防止 switch 語句貫穿 (true/false)
  • noUnusedLocals: 報告未使用的局部變量 (true/false)
  • noUnusedParameters: 報告未使用的函數參數 (true/false)\
  • noUncheckedIndexedAccess: 在索引訪問中包含 undefined (true/false)
  • noPropertyAccessFromIndexSignature: 禁止通過點符號訪問索引簽名屬性 (true/false)
  • removeComments: 移除注釋 (true/false)
  • preserveConstEnums: 保留 const enum 聲明 (true/false)
  • newLine: 指定換行符 (“crlf” 或 “lf”)
  • useDefineForClassFields: 使用現代類字段定義方式 (true/false)
  • keyofStringsOnly: 使 keyof 僅返回字符串 (true/false)
  • suppressExcessPropertyErrors: 禁止額外屬性檢查 (true/false)
  • suppressImplicitAnyIndexErrors: 禁止隱式索引錯誤 (true/false)
  • noErrorTruncation: 不截短錯誤消息 (true/false)
  • charset: 已棄用,指定輸入文件的字符集
  • emitBOM: 在輸出文件開頭寫入 BOM (true/false)
  • locale: 指定錯誤消息的語言環境 (如 “en-us”, “zh-cn”)
  • disableSizeLimit: 禁用 JavaScript 項目大小限制 (true/false)
  • listFiles: 打印編譯的文件名 (true/false)
  • listEmittedFiles: 打印輸出的文件名 (true/false)
  • traceResolution: 打印模塊解析日志 (true/false)
  • diagnostics: 打印診斷信息 (true/false)
  • extendedDiagnostics: 打印擴展診斷信息 (true/false)
  • generateCpuProfile: 生成 CPU 分析文
  • plugins: 指定要運行的編譯器插件列表

文件包含/排除選項

  • files: 指定要包含的文件列表
  • include: 指定要包含的文件模式
  • exclude: 指定要排除的文件模式
  • extends: 繼承另一個 tsconfig.json 文件的配置
  • references: 項目引用配置
  • compileOnSave: 指示 IDE 在保存時編譯 (true/false)
  • typeAcquisition: 指定自動類型獲取的選項

詳細用法示例

{"compilerOptions": {"target": "es6","module": "commonjs","strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true,"outDir": "./dist","rootDir": "./src","baseUrl": "./","paths": {"@utils/*": ["src/utils/*"]}},"include": ["src/**/*"],"exclude": ["node_modules", "**/*.spec.ts"]
}

最佳實踐建議

  • 對于新項目,建議啟用 strict: true 以獲得最嚴格的類型檢查
  • 使用 includeexclude 替代 files 來管理文件包含
  • 對于大型項目,考慮使用項目引用 (references) 來拆分代碼庫
  • 使用 extends 繼承共享配置,避免重復配置
  • 對于 Node.js 項目,target 設為 es2018 或更高版本可以獲得更好的性能
  • 啟用 esModuleInterop 可以簡化 CommonJS 模塊的導入

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

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

相關文章

Java經典筆試題

1.計算機網絡傳輸層有哪些協議?分別適用于什么場景? TCP:面向連接、可靠傳輸(重傳機制),適用于對數據完整性要求高的場景,如文件傳輸 (FTP)、HTTP 通信、郵件發送&…

如何序列化和反序列化動態 XmlElement ?

有如下XML&#xff0c;Index_0-Index_N為動態的&#xff0c;N為可變數&#xff0c;如何將對象NoneXML序列化為XML&#xff0c;以及如何將XML內容反序列化為對象NoneXML&#xff1f;1、XML內容<NoneXML><Index_0><UseInSummary>0</UseInSummary><Beg…

分布式高可用ELK平臺搭建及使用保姆級教程指南 (附安裝包網盤免費下載)

1 ELK 簡介 1.1 ELK 是什么 ? ELK是一套開源免費且功能強大的日志分析管理系統,由 Elasticsearch、Logstash、Kibana 三部分組成,是三個軟件產品的首字母縮寫,簡稱ELK。這三款軟件都是開源軟件,通常是配合使用,且歸于 Elastic.co 公司名下,所以被簡稱為 ELK。 ? ELK…

MySQL索引背后的B+樹奧秘

MySQL 索引實現機制深度解析 MySQL 索引的核心數據結構是 B樹。這種設計是數據庫領域數十年優化的結果&#xff0c;完美平衡了磁盤 I/O 效率、范圍查詢性能和存儲利用率。以下是關鍵要點&#xff1a;一、為什么選擇 B樹而非其他結構&#xff1f;數據結構劣勢B樹優勢二叉搜索樹深…

k8s通過NUMA親和分配GPU和VF接口

問題 一般情況下&#xff0c;sriov插件和gpu分配插件是單獨工作的&#xff0c;網卡和GPU沒有根據連接關系分配 如果一個節點起了多個容器&#xff0c;會造成GPU和網卡的通信瓶頸 修改 如果一個點起兩個容器&#xff0c;可以按照NUMA親和來分配 修改kubelet配置文件/var/lib/kub…

qemu-img 擴容虛擬機磁盤后擴容文件系統

在給磁盤映像擴容前需要關閉虛擬機1. 關閉虛擬機 [rootkvm1 opt]# virsh shutdown centos7.9 [rootkvm1 opt]# virsh list --allId Name State ----------------------------- centos7.9 shut off[rootkvm1 opt]# qemu-img info /var/lib/libvirt/images/centos…

Winwos上編譯opencv的GPU版本推理yolov8

1.工具 VS2019 opencv4.7.0 opencv_contrib4.7.0 Cmake3.27.0 cudnn-windows-x86_64-8.5.0.96_cuda11-archive 2.具體流程 1.配置路徑和編譯器后點擊configure 2.提前下載相關的包&#xff0c;如下圖所示 3.第一次configure完成后&#xff0c;需要再配置編譯選項 在編譯…

C語言案例《猜拳游戲》

《猜拳游戲》 游戲說明 一、游戲簡介 本游戲為猜拳對戰類游戲&#xff0c;玩家可選擇不同對手進行石頭、剪刀、布的猜拳對決&#xff0c;支持重復游玩&#xff0c;直至玩家選擇退出。 二、游戲流程 選擇對手 游戲開始后&#xff0c;玩家需從 3 名對手中選擇 1 名進行對戰&#…

使用python的頭文件Matplotlib時plt.show()【標題字體過小】問題根源與解決方案

使用python的頭文件Matplotlib時plt.show【標題字體過小】問題根源與解決方案1. 問題復現2. 問題分析3. 解決方案方案一&#xff08;推薦&#xff09;&#xff1a;使用 fig.suptitle 結合 subplots_adjust方案二&#xff1a;以保存文件函數plt.savefig為準方案三&#xff1a;不…

全面解析MySQL(3)——CRUD進階與數據庫約束:構建健壯數據系統的基石

> 本文將帶你深入探索MySQL的進階CRUD操作與核心約束機制,用設計原則的視角揭示數據庫如何保障數據世界的秩序。 ### 一、進階CRUD:數據操作的精密工具 #### 1. 精準篩選:WHERE子句的深度運用 ```sql -- 基礎篩選:價格大于50的菜品 SELECT * FROM dishes WHERE pric…

使用Redis實現MySQL的數據緩存

使用Redis來實現/mySQL的數據緩存的架構1&#xff1a;目標數據從mySQL讀取數據或者從Redis讀取數據 2&#xff1a;使用cannal監控mySQL&#xff1a;canal-server可以對mysql的blog實行拉取&#xff0c;可以拉去blog里面的(增&#xff0c;刪&#xff0c;改等操作&#xff0c;查詢…

linux配置ntp時間同步

目錄 1.設置時區 2.安裝chrony時間同步工具 3.修改chrony配置文件,添加阿里云NTP服務器作為時鐘源 4.重啟chrony服務&#xff0c;并查看同步結果 1.設置時區 timedatectl set-timezone Asia/Shanghai 2.安裝chrony時間同步工具 apt install chrony -y&#xff08;dnf ins…

powershell 實現批量把文件夾下的bmp文件轉換為jpg

以下是一個使用PowerShell將BMP圖像批量轉換為JPG&#xff08;質量85&#xff09;的腳本&#xff1a; <# .SYNOPSIS批量將BMP圖像轉換為JPG格式&#xff08;質量85&#xff09; .DESCRIPTION此腳本會遍歷指定文件夾中的所有BMP文件&#xff0c;并將它們轉換為JPG格式&#x…

星圖云開發者平臺新功能速遞 | 頁面編輯器:全場景編輯器,提供系統全面的解決方案

在數字化轉型的浪潮下&#xff0c;高效的低代碼開發工具成為企業和開發者的剛需&#xff0c;其需要針對Web、APP、H5等不同終端快速構建應用。但不同場景的開發往往需要不同的工具和技術棧&#xff0c;導致開發效率低、協作成本高。星圖云開發者平臺創新推出多類型頁面專用編輯…

激活函數Focal Loss 詳解?

Focal Loss 詳解?1. 背景?Focal Loss 是由 Lin et al. (2017) 在論文 《Focal Loss for Dense Object Detection》 中提出的一種損失函數&#xff0c;主要用于解決 目標檢測&#xff08;Object Detection&#xff09; 中的 類別不平衡問題&#xff0c;特別是在 One-Stage 檢測…

Python 鏈接各種中間件[Mysql\redis\mssql\tdengine]

文章目錄鏈接參數設置logger 日志redis 鏈接mysql 鏈接emqx 鏈接mssql 鏈接tdengine 鏈接采集OPCUA的點表的配置信息設備點表OPCUA 采集 數據程序數據采集邏輯鏈接參數 import randomtdengine_connection_params {username: root,password: taosdata,host: 127.0.0.1,port: 6…

C Primer Plus 第6版 編程練習——第11章(上)

本章共16題&#xff0c;分上中下三篇1.設計并測試一個函數&#xff0c;從輸入中獲取n個字符&#xff08;包括空白、制表符、換行符)&#xff0c;把結果存儲在一個數組里&#xff0c;它的地址被傳遞作為一個參數。int get_n_char(char arr[], int n) {int i 0;char ch;while (i…

Java開發崗面試記錄合集

一、Java 核心1. 基礎語法final關鍵字的作用修飾類&#xff1a;類不可被繼承&#xff08;如String類&#xff09;&#xff0c;保證類的穩定性和安全性。修飾方法&#xff1a;方法不可被重寫&#xff08;防止子類篡改父類核心邏輯&#xff0c;如工具類方法&#xff09;。修飾變量…

Linux 系統時間設置(date 和 ntpdate)-linux028

date 命令&#xff1a;查看或設置系統時間1. 查看當前時間date示例輸出&#xff1a;Tue Mar 4 01:36:45 CST 20142. 設置時間&#xff08;不設置日期&#xff09;date -s 09:38:40設置后輸出&#xff1a;Tue Mar 4 09:38:40 CST 20143. 設置完整日期和時間&#xff08;推薦格…

iOS上使用WebRTC推拉流的案例

一、庫集成 首先&#xff0c;確保在你的 Podfile 中添加依賴&#xff1a; pod GoogleWebRTC然后執行 pod install 安裝庫。 二、代碼示例 2.1、權限配置&#xff1a;在 Info.plist 中添加攝像頭、麥克風權限 <!-- 需要在 Info.plist 中添加以下權限 --> <key>NSCam…