最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript編譯選項的使用小結

 更新時間:2026年06月07日 09:45:54   作者:咖啡の貓  
本文主要介紹了TypeScript編譯選項的使用小結,詳細解析tsconfig.json核心配置,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧

一、前言

你是否曾面對一個龐大的 tsconfig.json 文件感到無從下手?
是否因為配置不當導致:

  • 編譯后的代碼在低版本瀏覽器報錯?
  • 類型檢查形同虛設,any 隨處可見?
  • 模塊導入方式混亂(ESM vs CommonJS)?
  • 構建速度慢如蝸牛?

其實,這些問題的根源往往在于 TypeScript 編譯選項(Compiler Options) 配置不當。

本文將帶你: ? 系統(tǒng)掌握 tsconfig.json核心配置項
? 理解每個選項的作用、取值與影響
? 學會為前端、Node.js、庫開發(fā)等場景定制配置
? 掌握嚴格模式(strict) 的真正價值
? 避開常見配置陷阱,提升開發(fā)體驗與代碼質量

?? 提示:本文基于 TypeScript 5.x,所有配置均經過實戰(zhàn)驗證。

二、tsconfig.json是什么?

tsconfig.json 是 TypeScript 項目的配置文件,用于指定:

  • 編譯器如何將 .ts 轉為 .js
  • 哪些文件需要編譯
  • 啟用哪些類型檢查規(guī)則

自動生成配置

npx tsc --init

該命令會生成一個帶完整注釋的 tsconfig.json,包含所有選項說明。

三、核心編譯選項詳解(必知必會)

1.target—— 編譯目標 JavaScript 版本

作用:決定生成的 JS 語法兼容性。

{
  "compilerOptions": {
    "target": "ES2020"
  }
}
取值生成的 JS 特性
"ES5"兼容 IE,無 let/const、箭頭函數等
"ES2015" (ES6)支持 class、模塊、Promise
"ES2020"支持可選鏈 ?.、空值合并 ??
"ESNext"使用最新提案(不推薦生產使用)

? 建議

  • 前端項目:根據 browserslist 選擇(如 "ES2020"
  • Node.js 項目:根據 Node 版本選擇(Node 18+ 可用 "ES2022"

2.module—— 模塊系統(tǒng)

作用:控制 import/export 的編譯輸出格式。

{
  "module": "commonjs"   // Node.js 默認
}
取值適用場景
"commonjs"Node.js(.js 文件使用 require/module.exports)
"ESNext" / "ES2020"現代前端(Vite、Webpack、Rollup)
"AMD" / "UMD"老舊打包工具(已少用)

?? 重要:

  • 瀏覽器項目 → 用 "ESNext"
  • Node.js 項目 → 用 "commonjs"(或 "node16" 啟用原生 ESM)

3.outDir與rootDir—— 輸入輸出目錄

{
  "rootDir": "./src",
  "outDir": "./dist"
}
  • rootDir:源碼根目錄(默認為包含 tsconfig.json 的目錄)
  • outDir:編譯后 JS 輸出目錄

? 效果:
src/utils/helper.ts → dist/utils/helper.js

?? 若不設置 rootDir,TS 會以最長公共路徑為根,可能導致目錄結構混亂。

4.strict—— 嚴格模式(TS 的靈魂?。?/h3>
{
  "strict": true
}

開啟后,自動啟用以下關鍵檢查:

  • strictNullChecks:禁止隱式 null/undefined
  • noImplicitAny:禁止隱式 any
  • strictFunctionTypes:函數參數更嚴格檢查
  • alwaysStrict:自動添加 "use strict"

? 強烈建議始終開啟 strict: true!
這是 TypeScript 發(fā)揮最大價值的前提。

?? 數據:開啟 strict 可減少 30%+ 的運行時錯誤(微軟內部統(tǒng)計)

5.esModuleInterop—— 模塊互操作

{
  "esModuleInterop": true
}

解決痛點:CommonJS 與 ES Module 混用時的導入問題。

例如,無需再寫:

// ? 丑陋且易錯
import * as React from 'react';

而是可以:

// ? 簡潔自然
import React from 'react';

? 建議始終設為 true(Create React App、Vite 等腳手架默認開啟)

6.skipLibCheck—— 跳過聲明文件檢查

{
  "skipLibCheck": true
}

作用:跳過 node_modules.d.ts 文件的類型檢查。

? 優(yōu)勢

  • 顯著加快編譯速度(尤其大型項目)
  • 避免第三方庫類型錯誤阻塞構建

?? 注意:不會影響你自己的代碼類型檢查!

7.sourceMap—— 生成 Source Map

{
  "sourceMap": true
}

作用:生成 .js.map 文件,支持在瀏覽器或調試器中直接調試 TS 源碼

? 開發(fā)環(huán)境必須開啟!
? 生產環(huán)境可關閉以減小體積。

四、其他實用選項

選項作用推薦值
declaration生成 .d.ts 聲明文件庫開發(fā)設為 true
removeComments移除 JS 注釋生產環(huán)境 true
noEmitOnError類型錯誤時不輸出 JStrue(避免污染 dist)
resolveJsonModule支持 import data from './data.json'按需開啟
allowSyntheticDefaultImports允許對無默認導出的模塊使用 default 導入通常與 esModuleInterop 配合

五、不同場景下的配置模板

場景 1:Node.js 后端(CommonJS)

{
  "compilerOptions": {
    "target": "ES2021",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "sourceMap": true,
    "noEmitOnError": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

場景 2:前端應用(Vite / Webpack)

{
  "compilerAssistant": {
    "target": "ES2020",
    "module": "ESNext",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "jsx": "react-jsx",       // React 項目需開啟
    "esModuleInterop": true,
    "skipLibCheck": true,
    "sourceMap": true
  },
  "include": ["src/**/*"]
}

?? 前端項目通常由構建工具(如 Vite)處理 TS,outDir 可能被忽略,但類型檢查仍依賴此配置。

場景 3:發(fā)布 NPM 包(需生成聲明文件)

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "declaration": true,      // ? 生成 .d.ts
    "declarationDir": "./types",
    "outDir": "./dist",
    "strict": true,
    "esModuleInterop": true
  }
}

六、常見配置陷阱與解決方案

? 陷阱 1:未開啟strict,導致any泛濫

現象:函數參數無類型,TS 不報錯
解決:立即開啟 "strict": true

? 陷阱 2:module與構建工具不匹配

現象:Vite 項目設 module: "commonjs" → 報錯
解決:前端用 "ESNext",Node.js 用 "commonjs" 或 "node16"

? 陷阱 3:忘記include,導致文件未被編譯

現象:新增 .ts 文件,但未生成 .js
解決:檢查 include 是否覆蓋新目錄

? 陷阱 4:在tsconfig.json中使用注釋(JSON 不支持?。?/h3>

現象:VS Code 報錯
解決:使用 .jsonc 擴展名,或移除注釋(標準 JSON 不允許注釋)

? 替代方案:用 // tsconfig.json 文件 + VS Code 的 JSON with Comments 支持

七、高級技巧:多配置文件與繼承

大型項目可拆分配置:

tsconfig.base.json     # 基礎配置
tsconfig.node.json     # Node.js 專用
tsconfig.web.json      # 前端專用

通過 extends 繼承:

// tsconfig.node.json
{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "module": "commonjs"
  }
}

? 優(yōu)勢:避免重復配置,統(tǒng)一團隊規(guī)范。

八、結語

到此這篇關于TypeScript編譯選項的使用小結的文章就介紹到這了,更多相關TypeScript編譯選項內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 信息滾動效果的實例講解

    信息滾動效果的實例講解

    下面小編就為大家?guī)硪黄畔L動效果的實例講解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Bootstrap源碼解讀表單(2)

    Bootstrap源碼解讀表單(2)

    這篇文章主要源碼解讀了Bootstrap表單,介紹了Bootstrap各式各樣的表單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • bootstrap fileinput插件實現預覽上傳照片功能

    bootstrap fileinput插件實現預覽上傳照片功能

    這篇文章主要介紹了bootstrap fileinput插件實現預覽上傳照片功能,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • JavaScript高級程序設計 DOM學習筆記

    JavaScript高級程序設計 DOM學習筆記

    DOM是針對XML和HTML文檔的一個API:即規(guī)定了實現文本節(jié)點操控的屬性、方法,具體實現由各自瀏覽器實現。
    2011-09-09
  • 前端防止表單重復提交的多種解決方案

    前端防止表單重復提交的多種解決方案

    表單重復提交是Web應用中常見的問題,會導致數據重復、業(yè)務邏輯錯誤和糟糕的用戶體驗,本文將詳細介紹多種防止表單重復提交的技術方案,從基礎實現到高級防御策略,需要的朋友可以參考下
    2025-07-07
  • javascript表單是否為空驗證方法

    javascript表單是否為空驗證方法

    表單驗證在很多地方都可以用到,本文詳細的介紹了javascript表單是否為空驗證方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 前端如何寫一個大文件上傳組件詳細步驟

    前端如何寫一個大文件上傳組件詳細步驟

    在現代Web應用中,大文件上傳是一個常見的需求,尤其是在云存儲、社交媒體和協作平臺等領域,這篇文章主要介紹了前端如何寫一個大文件上傳組件詳細步驟,需要的朋友可以參考下
    2025-04-04
  • js表單元素checked、radio被選中的幾種方法(詳解)

    js表單元素checked、radio被選中的幾種方法(詳解)

    下面小編就為大家?guī)硪黄猨s表單元素checked、radio被選中的幾種方法(詳解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • javascript textarea光標定位方法(兼容IE和FF)

    javascript textarea光標定位方法(兼容IE和FF)

    主要是實現textarea中光標的定位方法,考慮到多瀏覽器的兼容性,需要的朋友可以參考下。
    2011-03-03
  • JS實現將鏈接生成二維碼并轉為圖片的方法

    JS實現將鏈接生成二維碼并轉為圖片的方法

    這篇文章主要介紹了JS實現將鏈接生成二維碼并轉為圖片的方法,涉及qrcodejs插件及js圖片生成相關操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論

闽侯县| 贵南县| 辛集市| 翁牛特旗| 綦江县| 宁阳县| 阿鲁科尔沁旗| 沈阳市| 新津县| 博野县| 临清市| 永州市| 塔城市| 达拉特旗| 湖南省| 宣武区| 新绛县| 新民市| 博野县| 鄯善县| 南部县| 乐昌市| 克山县| 闽侯县| 加查县| 桂林市| 邢台市| 兴安县| 澳门| 八宿县| 兴义市| 鄱阳县| 广饶县| 岐山县| 建德市| 玉门市| 甘洛县| 乌什县| 肃南| 象山县| 南昌县|