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

vue項(xiàng)目中tsconfig.json的配置項(xiàng)用法介紹

 更新時間:2025年12月16日 09:42:32   作者:天河-  
本文介紹了Vue項(xiàng)目中tsconfig.json文件的核心配置項(xiàng),包括compilerOptions、include、exclude等,通過合理配置這些選項(xiàng),可以提升TypeScript與Vue單文件組件、工具鏈的協(xié)作效率,增強(qiáng)類型安全性和開發(fā)體驗(yàn),同時,還分享了一些常見問題的解決方法

在 Vue 項(xiàng)目中,tsconfig.json 是 TypeScript 編譯器的核心配置文件,用于指定編譯選項(xiàng)、類型檢查規(guī)則、文件范圍等。

合理配置 tsconfig.json 能確保 TypeScript 與 Vue 單文件組件(.vue)、工具鏈(如 Vite)正確協(xié)作,提升類型安全性和開發(fā)體驗(yàn)。

一、tsconfig.json基本結(jié)構(gòu)

Vue 項(xiàng)目的 tsconfig.json 通常包含以下結(jié)構(gòu):

  • json
{
  "compilerOptions": { /* 編譯選項(xiàng) */ },
  "include": [ /* 需要編譯的文件 */ ],
  "exclude": [ /* 排除的文件 */ ],
  "extends": [ /* 繼承其他配置文件 */ ]
}

二、核心配置項(xiàng)詳解(Vue 項(xiàng)目常用)

1.compilerOptions(編譯選項(xiàng))

這是最核心的配置項(xiàng),控制 TypeScript 的編譯行為和類型檢查規(guī)則。

配置項(xiàng)作用說明Vue 項(xiàng)目常用值
target指定編譯后 JavaScript 的 ECMAScript 版本ESNext(支持最新語法,配合 Babel 轉(zhuǎn)譯)
module指定模塊系統(tǒng)(模塊化方案)ESNext(與 ESM 兼容,支持動態(tài)導(dǎo)入)
moduleResolution模塊解析策略(如何查找導(dǎo)入的模塊)Node(與 Node.js 解析規(guī)則一致)
strict啟用所有嚴(yán)格類型檢查選項(xiàng)(推薦開啟,提升類型安全性)true
jsx指定 JSX 處理方式(Vue 項(xiàng)目常用 preserve 保留 JSX 語法,由 Vue 處理)preserve
sourceMap是否生成 SourceMap(調(diào)試時映射 TS 到 JS)true(開發(fā)環(huán)境)/ false(生產(chǎn)環(huán)境)
resolveJsonModule允許導(dǎo)入 JSON 文件true
esModuleInterop允許 ESM 與 CommonJS 模塊互操作(如默認(rèn)導(dǎo)入 CommonJS 模塊)true
allowSyntheticDefaultImports允許從無默認(rèn)導(dǎo)出的模塊中默認(rèn)導(dǎo)入(如某些第三方庫)true
baseUrl模塊解析的基礎(chǔ)目錄(配合 paths 使用)"."(項(xiàng)目根目錄)
paths路徑別名配置(需與 Vite/Webpack 的別名同步,如 @ 指向 src){"@/*": ["src/*"]}
types指定需要包含的類型聲明文件(如 Vite、Vue 的類型)["vite/client", "vue", "node"]
skipLibCheck跳過對庫文件(如 node_modules 中的類型)的類型檢查(提升編譯速度)true
allowJs允許編譯 JavaScript 文件(逐步遷移 JS 到 TS 時使用)true(可選)

2.include和exclude

  • include:指定需要 TypeScript 處理的文件或目錄(支持通配符 *)。
  • exclude:指定需要排除的文件或目錄(默認(rèn)排除 node_modules)。

Vue 項(xiàng)目典型配置:

  • json
{
  "include": [
    "src/**/*.ts",    // 所有 TS 文件
    "src/**/*.d.ts",  // 所有類型聲明文件
    "src/**/*.tsx",   // 所有 TSX 文件
    "src/**/*.vue"    // 所有 Vue 單文件組件
  ],
  "exclude": ["node_modules", "dist"]  // 排除依賴和構(gòu)建產(chǎn)物
}

3.extends

繼承其他配置文件(減少重復(fù)配置),常用場景:

  • 繼承 Vue 官方推薦配置:@vue/tsconfig/tsconfig.dom.json
  • 繼承 TypeScript 官方嚴(yán)格配置:strict

json

{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "compilerOptions": {
    // 在此覆蓋或補(bǔ)充配置
  }
}

三、Vue 項(xiàng)目完整配置示例

{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "Node",
    "strict": true,
    "jsx": "preserve",
    "sourceMap": true,
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"],
      "components/*": ["src/components/*"]
    },
    "types": ["vite/client", "vue", "node"],
    "skipLibCheck": true,
    "allowJs": true
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "src/env.d.ts"
  ],
  "exclude": ["node_modules", "dist"]
}

四、關(guān)鍵配置的使用場景

1. 路徑別名(baseUrl+paths)

配合 Vite 的 resolve.alias 使用,簡化模塊導(dǎo)入:

tsconfig.json 中配置:

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

代碼中直接使用:

  • typescript
import Home from '@/views/Home.vue'  // 等價(jià)于 './src/views/Home.vue'

2. 嚴(yán)格模式(strict: true)

開啟后會強(qiáng)制檢查以下規(guī)則(提升代碼質(zhì)量):

  • 變量必須聲明類型(或通過上下文推斷)
  • null 和 undefined 必須顯式處理(避免 Cannot read property 'x' of undefined 錯誤)
  • this 必須有明確類型(避免在 Vue 組件中誤用 this

若需要部分關(guān)閉,可單獨(dú)設(shè)置子選項(xiàng)(如 strictNullChecks: false),但不推薦。

3. 類型聲明文件(types+src/env.d.ts)

  • types: ["vite/client"]:導(dǎo)入 Vite 客戶端類型(如 import.meta.env
  • src/env.d.ts:聲明 Vue 組件和環(huán)境變量類型(必須包含在 include 中):

typescript

// src/env.d.ts
declare module '*.vue' {
  import type { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}

interface ImportMetaEnv {
  readonly VITE_API_URL: string  // 聲明環(huán)境變量類型
}

五、常見問題解決

*“找不到模塊 .vue” 錯誤

確保 src/env.d.ts 中聲明了 .vue 模塊,且 tsconfig.json 的 include 包含該文件。

路徑別名不生效

  • 檢查 paths 配置是否與 Vite 的 resolve.alias 一致
  • 安裝 @types/node 獲得路徑解析支持:npm install @types/node -D

第三方庫缺少類型聲明

  • 安裝對應(yīng)的 @types/xxx 包(如 @types/lodash
  • 若沒有類型包,可在 src/env.d.ts 中手動聲明:

typescript

declare module 'untyped-lib' {
  export function func(a: number): string
}

通過合理配置 tsconfig.json,可以讓 TypeScript 更好地適配 Vue 項(xiàng)目,充分發(fā)揮類型檢查的優(yōu)勢,減少運(yùn)行時錯誤。

更多配置細(xì)節(jié)可參考 TypeScript 官方文檔 和 Vue TypeScript 指南

總結(jié)

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

相關(guān)文章

  • 解決vue props傳Array/Object類型值,子組件報(bào)錯的情況

    解決vue props傳Array/Object類型值,子組件報(bào)錯的情況

    這篇文章主要介紹了解決vue props傳Array/Object類型值,子組件報(bào)錯的情況,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue路由跳轉(zhuǎn)了但界面不顯示的問題及解決

    vue路由跳轉(zhuǎn)了但界面不顯示的問題及解決

    這篇文章主要介紹了vue路由跳轉(zhuǎn)了但界面不顯示的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vite性能優(yōu)化之分包策略的實(shí)現(xiàn)

    Vite性能優(yōu)化之分包策略的實(shí)現(xiàn)

    本文主要介紹了Vite性能優(yōu)化之分包策略的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue中關(guān)于trigger的用法

    vue中關(guān)于trigger的用法

    這篇文章主要介紹了vue中關(guān)于trigger的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue3?-?setup?script的使用體驗(yàn)分享

    Vue3?-?setup?script的使用體驗(yàn)分享

    Vue3中的setup一種是setup函數(shù),一種是script setup,這篇文章主要給大家介紹了關(guān)于Vue3?-?setup?script使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Vue3中頁面重定向的方式匯總

    Vue3中頁面重定向的方式匯總

    Vue3?中頁面重定向主要依賴?Vue?Router?4,這是一個Vue3?配套的路由庫,具體分為路由配置式重定向、編程式導(dǎo)航重定向和路由守衛(wèi)重定向三類場景,以下是各種方式匯總,需要的朋友可以參考下
    2025-12-12
  • vue3使用Pinia的store的組件化開發(fā)模式詳解

    vue3使用Pinia的store的組件化開發(fā)模式詳解

    這篇文章主要介紹了vue3使用Pinia的store的組件化開發(fā)模式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue{{}}拼接字符串和換行符方式

    vue{{}}拼接字符串和換行符方式

    這篇文章主要介紹了vue{{}}拼接字符串和換行符方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 用Vue.js開發(fā)網(wǎng)頁時鐘

    用Vue.js開發(fā)網(wǎng)頁時鐘

    這篇文章主要為大家詳細(xì)介紹了用Vue.js開發(fā)一個網(wǎng)頁時鐘,分為白天模式和夜晚模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 淺談Vue網(wǎng)絡(luò)請求之interceptors實(shí)際應(yīng)用

    淺談Vue網(wǎng)絡(luò)請求之interceptors實(shí)際應(yīng)用

    這篇文章主要介紹了淺談Vue網(wǎng)絡(luò)請求之interceptors實(shí)際應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論

五大连池市| 东乡县| 南召县| 呼玛县| 通化县| 福安市| 思南县| 抚宁县| 广灵县| 井陉县| 屏边| 马关县| 皋兰县| 博罗县| 栖霞市| 安图县| 隆林| 泽库县| 石城县| 太原市| 南川市| 安陆市| 凤城市| 宜君县| 获嘉县| 融水| 普陀区| 周口市| 油尖旺区| 眉山市| 岳池县| 贵州省| 新河县| 信阳市| 广饶县| 璧山县| 益阳市| 铅山县| 永嘉县| 黄平县| 东丽区|