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

TypeScript編譯選項使用及說明

 更新時間:2026年04月17日 09:12:17   作者:難釋懷  
本文介紹了tsconfig.json文件的作用、結構、常用編譯選項、不同環(huán)境配置建議、配置繼承與復用、常見問題與解決方案,并提供了常用編譯選項對比表,幫助開發(fā)者全面了解TypeScript項目的配置

一、前言

在開發(fā) TypeScript 項目時,一個非常關鍵的文件就是 tsconfig.json。它不僅定義了項目的根目錄、模塊解析方式,還控制著 TypeScript 編譯器的行為。

本文將帶你全面了解:

  • tsconfig.json 的作用
  • ? 常用編譯選項(compilerOptions)詳解
  • ? 不同環(huán)境下的配置建議(開發(fā) / 生產(chǎn))
  • ? 配置繼承與共享設置
  • ? 實際開發(fā)中的常見問題與解決方法

并通過完整的代碼示例幫助你掌握如何正確配置 TypeScript 項目。

二、什么是tsconfig.json?

定義:

tsconfig.json 是 TypeScript 項目的配置文件,用于指定項目的編譯選項和行為。

當你在項目根目錄下添加該文件后,TypeScript 編譯器會自動識別并應用這些配置。

作用:

  • 指定編譯目標(ES 版本、模塊系統(tǒng)等)
  • 控制類型檢查嚴格程度
  • 設置輸出目錄
  • 支持路徑別名、裝飾器等功能

三、基本結構示例

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "lib": ["ES2020", "DOM"],
    "strict": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "outDir": "./dist",
    "rootDir": "./src",
    "baseUrl": ".",
    "paths": {
      "@/*": ["./*"]
    },
    "sourceMap": true,
    "declaration": false,
    "removeComments": true,
    "noEmit": false,
    "watch": false
  },
  "include": ["src/**/*"]
}

四、常用編譯選項詳解

1.target:指定編譯目標版本

"target": "ES2020"

常見值:

  • "ES3"(默認)
  • "ES5"
  • "ES2015"(ES6)
  • "ES2020"
  • "ESNext"

2.module:指定模塊系統(tǒng)

"module": "ESNext"

常見值:

  • "CommonJS"(Node.js 默認)
  • "ESNext"(推薦用于現(xiàn)代瀏覽器)
  • "UMD"、"AMD" 等

3.lib:指定編譯過程中使用的庫

"lib": ["ES2020", "DOM"]

示例組合:

  • 瀏覽器環(huán)境:["ES2020", "DOM"]
  • Node.js 環(huán)境:["ES2020", "ES2021.Promise", "ES2021.String"]

4.strict:啟用所有嚴格類型檢查選項

"strict": true

包含以下子選項(開啟后不可單獨關閉):

  • strictNullChecks
  • strictFunctionTypes
  • strictBindCallApply
  • strictPropertyInitialization
  • noImplicitThis
  • alwaysStrict

5.moduleResolution:模塊解析策略

"moduleResolution": "node"

常見值:

  • "classic"(舊版)
  • "node"(推薦用于 Node.js 或 Webpack 項目)

6.esModuleInterop:允許 CommonJS 和 ES 模塊互操作

"esModuleInterop": true

推薦開啟,避免導入時出現(xiàn) .default 問題。

7.skipLibCheck:跳過類型聲明文件的檢查

"skipLibCheck": true

推薦開啟以加快編譯速度。

8.outDir:指定輸出目錄

"outDir": "./dist"

9.rootDir:指定源碼目錄

"rootDir": "./src"

10.baseUrl與paths:配置路徑別名

"baseUrl": ".",
"paths": {
  "@/*": ["./*"]
}

使用方式:

import utils from '@/utils/index';

11.sourceMap:生成 source map 文件

"sourceMap": true

用于調(diào)試,生產(chǎn)環(huán)境可設為 false

12.declaration:是否生成.d.ts類型聲明文件

"declaration": true

適用于庫項目,方便別人使用你的包。

13.removeComments:是否移除注釋

"removeComments": true

14.noEmit:是否生成編譯后的文件

"noEmit": false

開發(fā)階段可設為 true,只進行類型檢查。

15.watch:監(jiān)聽文件變化并重新編譯

"watch": true

五、不同環(huán)境的配置建議

場景開發(fā)環(huán)境生產(chǎn)環(huán)境
target"ESNext""ES2020"
lib"ESNext", "DOM""ES2020", "DOM"
stricttruetrue
skipLibChecktruetrue
outDir"./dist""./dist"
sourceMaptruefalse
declaration可選true(如果是庫)
noEmittrue(僅類型檢查)false

六、配置繼承與復用

你可以通過 extends 屬性繼承其他配置文件,便于多個項目共用配置。

{
  "extends": "@myorg/tsconfig-base",
  "compilerOptions": {
    "outDir": "./dist"
  }
}

常見基礎配置包:

  • @tsconfig/recommended
  • @tsconfig/node18
  • 自定義 npm 包(如團隊內(nèi)部統(tǒng)一配置)

七、常見問題與解決方案

問題解決方案
導入模塊提示找不到 .default? 啟用 esModuleInterop
報錯:Object is possibly 'undefined'? 啟用 strictNullChecks 或加類型判斷
編譯太慢? 啟用 skipLibCheck
無法使用 JSX? 設置 jsx: "react" 或其它支持
不能識別路徑別名? 設置 baseUrl 和 paths
輸出目錄為空? 檢查 outDir 和 rootDir 是否正確
類型報錯但不影響運行? 檢查是否啟用了 strict 模式

八、總結對比表:常用 compilerOptions 對比

選項說明推薦值
target編譯目標版本"ES2020"
module模塊系統(tǒng)"ESNext"
lib使用的庫["ES2020", "DOM"]
strict啟用嚴格模式true
moduleResolution模塊解析方式"node"
esModuleInterop允許 ES 模塊互操作true
skipLibCheck跳過 lib 檢查true
outDir輸出目錄"./dist"
rootDir源碼目錄"./src"
baseUrl & paths路徑別名".", {"@/*": ["./*"]}
sourceMap生成 source maptrue(開發(fā))
declaration生成類型聲明true(庫項目)
removeComments移除注釋true
noEmit不生成文件true(僅檢查)
watch監(jiān)聽變化true(開發(fā))

九、總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • js實現(xiàn)的切換面板實例代碼

    js實現(xiàn)的切換面板實例代碼

    切換面板具備功能:鼠標劃過不同的題目會有不同的圖片和解說,可以連接到不同的網(wǎng)站,實例代碼如下,感興趣的朋友可以參考下哈
    2013-06-06
  • Javascript頁面跳轉常見實現(xiàn)方式匯總

    Javascript頁面跳轉常見實現(xiàn)方式匯總

    這篇文章主要介紹了Javascript頁面跳轉常見實現(xiàn)方式,結合實例匯總分析了JavaScript常用的七種頁面跳轉實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • JS?生態(tài)系統(tǒng)加速Polyfill函數(shù)使用實例探索

    JS?生態(tài)系統(tǒng)加速Polyfill函數(shù)使用實例探索

    這篇文章主要介紹了JS?生態(tài)系統(tǒng)加速Polyfill函數(shù)使用實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 分享Javascript實用方法二

    分享Javascript實用方法二

    javascript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型,本文給大家分享javascript實用方法二,感興趣的朋友一起學習吧
    2015-12-12
  • 一文詳解js中如何改變this指向

    一文詳解js中如何改變this指向

    在JavaScript中,關鍵字this是指向當前執(zhí)行上下文的對象,它的指向取決于函數(shù)被調(diào)用的方式,這篇文章主要介紹了js中如何改變this指向的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-01-01
  • js實現(xiàn)收縮菜單效果實例代碼

    js實現(xiàn)收縮菜單效果實例代碼

    這篇文章介紹了js實現(xiàn)收縮菜單效果實例代碼,有需要的朋友可以參考一下
    2013-10-10
  • 詳解bootstrap的modal-remote兩種加載方式【強化】

    詳解bootstrap的modal-remote兩種加載方式【強化】

    本篇文章主要介紹了詳解bootstrap的modal-remote兩種加載方式【強化】,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • ionic2 tabs使用 Modal底部tab彈出框

    ionic2 tabs使用 Modal底部tab彈出框

    最近做了一個項目,其中要實現(xiàn)這樣的功能,在首頁底部中間的tab彈出一個頁面,而且是沒有底部欄的,而不是像平常滑動的一個子頁面。其實實現(xiàn)方法很簡單,下面通過本文給大家介紹下
    2016-12-12
  • js控制div層的疊加簡單方法

    js控制div層的疊加簡單方法

    下面小編就為大家?guī)硪黄猨s控制div層的疊加簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Javascript 浮點運算精度問題分析與解決

    Javascript 浮點運算精度問題分析與解決

    浮點數(shù)的精度問題不是JavaScript特有的,因為有些小數(shù)以二進制表示位數(shù)是無窮的
    2014-03-03

最新評論

湘西| 鹰潭市| 洛阳市| 花垣县| 响水县| 德江县| 北安市| 兴国县| 南丰县| 临安市| 垦利县| 崇义县| 仙居县| 大港区| 荃湾区| 申扎县| 长顺县| 富阳市| 黄陵县| 武穴市| 娱乐| 乌什县| 赫章县| 南川市| 丽水市| 西乌| 东平县| 伊宁县| 新民市| 登封市| 台州市| 汝阳县| 海口市| 日喀则市| 贵定县| 南华县| 稷山县| 无为县| 临颍县| 沈丘县| 孝义市|