精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一些你需要掌握的 Tsconfig.Json 常用配置項

開發 前端
Tsconfig.json 是用來配置 TS 編譯選項的,通常位于項目的根目錄位置。

大家好,我是前端西瓜哥。

tsconfig.json 是用來配置 TS 編譯選項的,通常位于項目的根目錄位置。

我們可以用 ts 提供的 tsc 命令行工具,執行 tsc --init。

復制$ tsc --init
Created a new tsconfig.json with: TS
target: es2016
module: commonjs
strict: true
esModuleInterop: true
skipLibCheck: true
forceConsistentCasingInFileNames: true
You can learn more at https://aka.ms/tsconfig

然后我們就能得到一個默認的 tsconfig.json 文件,且這是一種可以添加注釋的 json 文件。

里面有很多帶有注釋的選項,目的是讓開發者能夠反注釋快速啟用一些配置。

但注釋的選項太多了,所以我將它們移除了,得到下面的默認配置:

復制{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
}
}

頂層配置

首先我們看配置最上層級的配置字段。

  1. compilerOptions:編譯器相關的選項。比如配置編譯成 ES5,模塊化使用 commonjs 等。這里的編譯配置很多,后面我們會講解一些常用的配置;
  2. files:指定需要被編譯的文件列表。這里不能指定目錄,只能是文件,可以省略.ts 后綴。適合需要編譯的文件比較少的情況。默認值為 false;
  3. include:指定需要編譯的文件列表或匹配模式。include 可以通過通配符指定目錄,如"src/**/*" 表示 src 下的所有文件。如果沒有指定 files 配置,默認值為 ** ,即項目下所有文件;如果配置了 files,默認值為 [] 空數組;
  4. exclude:在 include 圈定的范圍內,排除掉一些文件。我們經常用它來排除編譯輸出目錄、測試文件目錄、一些生成文件的腳本等文件。默認值為 "node_modules,bower_componen";
  5. extends:繼承另一個 ts 配置文件。這在 monorepo 的代碼組織中非常有用,不同的 package 可以通過 extends 繼承通用的 ts 配置。用法示例:"extends": "./common-tsconfig.json"。
  6. reference:引用。項目中如果有多個相互獨立的模塊,可以使用這個屬性來做分離。這樣一個模塊改變后,就只重新編譯這個模塊,其他模塊不重新編譯。編譯時要改用tsc --build。這在非常大的項目中應該能有不小收益。

需要注意的是,files、include、exclude 只是指定編譯的入口文件范圍,如果其中的文件 import 了范圍外的 ts 文件,范圍外的文件依舊會被編譯。

在 VSCode 下,范圍外的 ts 文件不會應用項目下的 tsconfig.json 配置。

常用的編譯器配置(compilerOptions)

接下來我們就來看看 compilerOptions 下的常用配置屬性。

因為配置項實在很多,我就挑一些比較基本的進行講解。

target

指定編譯的目標版本。

tsc 也可以像 babel 一樣,可以將高版本的 TS / JS 編譯為低版本。你看這個 tsc 腳本多大。

圖片

target 用于指定 TS 最后編譯出來的 ES 版本,默認值是 ES3。

對于一些高版本引入的新 API 并,tsc 不會注入 polyfill,你需要自己全量引入 core-js,這點還是 babel 提供的按需引入 core-js 要更好一些。

當然其他的不能 polyfill 的實現,tsc 還是會做處理的。比如箭頭函數轉換為普通函數,async / await 轉換為一大坨的等價代碼。

說實在的,ES3 實在有夠古老的,很多 API 都不支持,個人覺得默認為 ES5 比較好。

我想大概是歷史原因,因為 TS 發布那會,ES6 還沒出來,只有 ES5 編譯成 ES3 這一種情況。現在雖然 ES5 已經廣泛支持了,但為了兼容還是保持默認的 ES3。

target 支持的值有:es3、es5、es6(也叫 es2015)、es2016 一直到 es2022、然后還有 esnext。沒有 es7 這種東西,你得用 es2016。另外,esnext 指的是當前版本的 TS 編譯器支持的最高版本。

這些值是大小寫敏感的,可以是 es5、ES5,或大小寫混雜。

通常來說前端項目會使用 es5。后端項目就看 nodejs 的版本支持 ES 的程度,像 Nestjs 腳手架生成的項目,taget 指定為 es2017。

lib

TypeScript 默認自帶通用的 JS 內置 API 的類型聲明,比如 Math、RegExp 等。

但 JS 運行的環境各種各樣,會有一些特有的全局對象,比如瀏覽器下的 document,新的 ES 版本引入的新的 API。

為此,我們可以用 lib 這個屬性來設置需要引入的全局類型聲明。

lib 有高層級的:ES5、ES2015、DOM 、ESNEXT、WebWorker、ScriptHost 等?;蚴堑蛯蛹壞K的 DOM.Iterable、ES2015.Core、ES2017.TypedArrays、 ES2018.Intl 等。高層級通常是多個全局類型聲明的組合。

lib 的默認值通過 target 來指定,比如你的 target 指定為 ES7,它就會引入 ES7 的全局類型(大概是 lib.es2016.full.d.ts)。

但如果你想用最新版本的 ES 語法,但希望它能編譯成兼容性良好的 ES5,你就要手動設置 lib,像下面這樣:

復制"target": "ES5",
"lib": [
"DOM",
"DOM.Iterable",
"ESNext"
]

lib 可以引入的全局類型聲明文件都在這個目錄下:

https://github.com/microsoft/TypeScript/blob/main/lib。

strict

啟用嚴格模式,能夠更能保證類型檢測的正確。

將 strict 設置為 true,會開啟一系列的嚴格的類型檢驗配置。

比如  strictNullChecks 配置的默認值會變成 true。這樣一些對象類型就不能賦值為 undefined 或 null,就能一定程度阻止 obj.prop 可能導致的 Cannot read properties of undefined 的運行時錯誤。

還比如 strictBindCallApply 默認值變成 true。此時,對函數使用 bind、call、apply,參數類型必須和原函數類型相同。如果是 false,則可以是任何類型。

此外還有很多其他的和嚴格模式相關的配置也會開啟。

建議開啟 strict,能減少 bug,缺點是要多寫一些類型推斷和分支判斷的代碼。

baseUrl

baseUrl 用于設置基礎 url,可以幫我們省掉一些多余的路徑前綴。

比如我們原來要寫長長的:

復制import { Login } from "./src/features/user/login";

但如果我們設置 baseUrl 為 ./src,我們使用絕對路徑時就能去掉重復的前綴,將路徑寫短一些:

復制import { Login } from "features/user/login";

相對路徑不需要 baseUrl,因為它是相對于當前文件路徑計算的。

./src 的 . 為 tsconfig.json 配置文件所在的目錄路徑。其實寫成 src 也可以,它和 ./src 是等價的。

如果你不設置 baseUrl,模塊文件 import 需要使用相對路徑,或絕對路徑(不是針對項目根目錄的絕對路徑,而是完整的路徑)。

如果你想使用相對項目根目錄的路徑,你需要將 baseUrl 設置為 . 。

paths

路徑重映射。

要使用 paths,首先要設置好 baseUrl,paths 的源路徑和新路徑會使用 baseUrl 作為相對路徑計算。

復制"baseUrl": "./src",
"paths": {
"@lib/*": ["./other/_lib/*", "./other/_lib2/*"]
},

上面的配置,是將 other/_lib 和 other/_lib2 路徑重映射為 @lib。

這里的 @ 并不是必須的,這樣寫只是表明這個路徑是一個重映射,或者叫別名,實際上文件系統上不存在對應的真實目錄。

這樣,原來比較冗長的路徑:

復制import LibA from "other/_lib/lib_a";

就可以改為:

復制import LibA from "@lib/lib_a";

declaration

是否給每個編譯出來的 JS 生成對應的 d.ts 類型聲明文件。

TS 編譯后變成的 JS 是不攜帶類型信息的。如果你想要保留信息,就需要一個 d.ts 文件來描述對應的 JS 文件。

我們用 NPM 安裝的第三方包,這些包下的 package.json 文件的 types 屬性,就指定了這個包的類型文件。如果沒有顯式提供 types 屬性,則使用默認的 index.d.ts。

declarationDir

指定編譯生成的類型聲明文件輸出的目錄。不提供的話,默認和生成的 js 文件放在一起。

復制"declarationDir": "./types"

outDir

編譯文件的輸出目錄,默認為 .,即項目根目錄。如果不設置它,編譯后的文件就會和源文件混雜在一起。通常我們會將 outDir 設置為 "./dist"。

outFile

將所有 ts 文件合并編譯生成一個 js 文件和它的類型聲明 d.ts 文件。

這個配置項很少用,因為它只能用在不支持模塊化導入的系統,即所有的 ts 文件都是全局的。

換句話說,module 配置項需要為 None、System 或 AMD。

復制"outFile": "./app.js"

module

編譯后的 JS 使用哪種模塊系統。

模塊系統常用的有兩種:ESModule 和 CommonJS。前者是 ES 的標準(使用了 import 關鍵字),后者則是 Nodejs 的使用的模塊系統(使用了 require)。此外還有 AMD、UMD 等。

支持的值有:none、commonjs、amd、umd、system、es6/es2015、es2020、es2022、esnext、node16、nodenext。

它們的具體不同可以看官方文檔的代碼示例:

https://www.typescriptlang.org/tsconfig#module。

如果 target 是 ES3 或 ES5,默認值是 CommonJS(畢竟 ES6 后才有的 ESModule);否則為 ES6/ES2015。

allowJs

將 js 文件也作為編譯對象,可以被 ts 文件引入。布爾值,默認為 false。

types

類型聲明的一種引入方式是 @types 包,比如 React 框架使用了 flow 作為類型系統,為了支持 TypeScript,React 團隊又寫一套 d.ts 類型文件,發布到 @types/react 包上。

然后我們下載這個類型包后,并使用類似 import React from 'react',TS 會從從 node_modules/@types 中找到 react 文件夾,如果找不到,就會向上一層目錄繼續找,知道找到位置。如果存在,這個 React 對象就會被賦予聲明的類型。

@types 可以是模塊類型聲明(像 React 類型),也可以是全局類型聲明(如 nodejs 的 process 對象類型)。

types 配置 可指定只使用哪些全局類型聲明,而不是 node_modules/@types 下所有的類型聲明。如:

復制"lib": [
"node", // 即 node_modules/@types/node
"jest"
]

typeRoots

前面說到 ts 會遞歸查找 node_modules/@types  去尋找類型聲明文件。

但你也可以用 typeRoots 來 指定只尋找特定目錄下的類型聲明文件,如:

復制"typeRoots": ["./typings", "./vendor/types"]

結尾

tsconfig 的配置非常多,但我想基本上掌握上面這幾個配置的使用就差不多了。

更多的配置項可以看官方文檔,建議自己構建一個 TS 項目進行測試。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2020-09-26 07:33:09

Typescript的

2020-06-12 10:00:25

前端tsconfig.js命令

2017-02-09 14:46:25

Git事情

2017-09-18 18:31:08

Hadoop

2011-03-15 17:46:43

2010-09-28 14:14:19

SQL語句

2019-08-19 14:56:07

設計模式javascript

2022-02-17 13:58:38

Linux技巧文件

2017-10-16 14:40:50

數據庫MySQL工具

2011-12-14 16:43:54

javanio

2024-01-09 13:36:44

存儲數據存儲

2024-03-04 06:37:55

TypeScript類型聲明靜態方法

2011-11-28 15:57:26

MySQL數據庫主從配置

2017-05-25 10:44:38

云存儲對象存儲存儲

2021-08-28 11:47:52

json解析

2014-05-13 09:55:13

iOS開發工具

2010-10-08 16:32:59

MySQL語句

2020-10-19 19:25:32

Python爬蟲代碼

2022-03-22 07:38:00

SQL語句MySQL

2012-03-14 14:30:13

Ubuntu軟件包
點贊
收藏

51CTO技術棧公眾號

中文字幕欧美日韩在线| 亚洲一级片在线观看| 欧美整片在线观看| youjizz亚洲女人| 伊人久久大香线蕉综合影院首页| 亚洲三级小视频| www.久久久| 不卡av电影在线| 欧美fxxxxxx另类| 日韩精品在线第一页| 又色又爽又黄视频| 中文在线资源| 亚洲精品自拍动漫在线| 久久久久网址| 国产视频手机在线| 天堂va蜜桃一区二区三区 | 秋霞蜜臀av久久电影网免费| 日本乱人伦aⅴ精品| 国内自拍中文字幕| 国产露出视频在线观看| 国产成+人+日韩+欧美+亚洲| 国产成人精品a视频一区www| 精品少妇一二三区| 久久人体视频| 成人小视频免费观看| 国产成人在线播放| 国产一级在线播放| 五月久久久综合一区二区小说| 日韩成人在线播放| 三上悠亚 电影| www.国产精品| 欧美午夜女人视频在线| 国产精品视频一二三四区| 一区二区三区视频网站| 91免费在线看| 国产成人精品日本亚洲11| 亚洲天堂一二三| 天堂va蜜桃一区二区三区漫画版| 97欧美精品一区二区三区| 欧美爱爱小视频| 天天影视欧美综合在线观看| 亚洲天堂男人天堂女人天堂| 可以在线看的黄色网址| 黄页网站在线| 亚洲女同一区二区| youjizz.com亚洲| se在线电影| 国产视频一区在线播放| 欧美日韩精品免费观看视一区二区| 丰满少妇被猛烈进入| 国产一区二区导航在线播放| 国产在线观看一区二区三区| 最近中文字幕在线观看视频| 日日夜夜精品视频天天综合网| 欧美中文在线字幕| 国产精品视频123| 亚洲在线观看| 欧美一级片一区| 国产精品午夜影院| 国产欧美短视频| 欧美在线一级va免费观看| 国产香蕉视频在线| 国产农村妇女精品一二区| 欧美在线欧美在线| 欧美一区免费看| 秋霞成人午夜伦在线观看| 国产精品电影网| 影音先锋国产资源| 精品一二三四区| 91久久久久久久久久久久久| av资源免费看| 高清在线观看日韩| 国产一区高清视频| 日本v片在线免费观看| 久久久精品黄色| 视频一区不卡| av网站导航在线观看免费| 一区二区三区免费网站| 分分操这里只有精品| 亚洲女同志freevdieo| 色8久久精品久久久久久蜜| 国产一区二区在线免费播放| 不卡一区视频| 精品国产乱码久久久久久影片| 人妻无码中文久久久久专区| 狠狠色狠狠色综合婷婷tag| 色狠狠久久aa北条麻妃| 国产高潮视频在线观看| 国产精品白浆| 亚洲性生活视频在线观看| 久草福利资源在线| 欧美极品一区二区三区| 4438全国成人免费| 在线观看不卡的av| 国产91富婆露脸刺激对白| 久久国产日韩欧美| 秋霞午夜在线观看| 午夜一区二区三区在线观看| av免费网站观看| 欧美第一在线视频| 日韩精品高清视频| 97精品在线播放| 亚洲另类自拍| 国产乱人伦真实精品视频| 老牛影视av牛牛影视av| 国产欧美日韩激情| 青青青青草视频| 亚洲成a人片777777久久| 亚洲精品videossex少妇| 国产精品麻豆免费版现看视频| 欧美日本一区| 国产精品香蕉在线观看| 天堂在线资源网| ㊣最新国产の精品bt伙计久久| 日韩精品xxxx| 日本亚洲视频| 中文字幕亚洲自拍| 亚洲s码欧洲m码国产av| 国产成人av电影| 亚洲一区二区三区精品在线观看 | ...xxx性欧美| 男人舔女人下面高潮视频| 亚洲精品国产九九九| 欧美日韩中文另类| 中文成人无字幕乱码精品区| 91高清一区| 国产精品久久久久久久久男 | ijzzijzzij亚洲大全| 92国产精品| 亚洲第一av在线| 久草资源在线视频| 国内一区二区视频| 亚洲亚洲精品三区日韩精品在线视频| 偷拍自拍在线看| 亚洲第一在线视频| 久久久久久国产精品视频| 激情五月婷婷综合网| 性刺激综合网| 午夜日韩成人影院| 亚洲欧美另类在线观看| 可以免费在线观看的av| 国产成人aaa| 国产xxxx振车| 亚洲一区二区电影| 色综合久久中文字幕综合网小说| 亚洲熟妇av乱码在线观看| 国产日韩欧美精品电影三级在线 | 91黄页在线观看| 日韩欧美你懂的| 亚洲av鲁丝一区二区三区| 黄色小说综合网站| 性欧美18一19内谢| 精品国产第一国产综合精品| 久久在线观看视频| 亚洲国产精品日韩| av美女在线观看| 亚洲精品在线观看视频| 精品小视频在线观看| 国产91高潮流白浆在线麻豆| 久久99久久99精品| 99久久人爽人人添人人澡| 欧美激情一级欧美精品| 亚洲精品一区二区三区蜜桃 | 国产无码精品一区二区| 成人午夜精品在线| 五月丁香综合缴情六月小说| 任你弄精品视频免费观看| 青青草原成人在线视频| 欧美伦理影视网| 欧美在线观看一区| 亚洲 欧美 国产 另类| 韩国v欧美v日本v亚洲v| 精品久久久无码人妻字幂| a看欧美黄色女同性恋| 午夜精品久久久久久久久久久久久| 天天干视频在线观看| 精品日韩视频在线观看| 亚洲自拍偷拍图| 精品无人区卡一卡二卡三乱码免费卡| 精品嫩模一区二区三区| 精品网站aaa| 国产成人自拍视频在线观看| 欧美成人三区| 精品国产三级电影在线观看| 国产精品免费精品一区| 国产精品全国免费观看高清 | 欧美一级特黄视频| 久久久99精品免费观看| www,av在线| 亚洲精品一二| 丝袜诱惑制服诱惑色一区在线观看| 久久精品第九区免费观看| 天天综合网站| 久久91精品国产91久久跳| 亚洲欧美日韩动漫| 久久久久99精品国产片| 在线观看免费视频高清游戏推荐| 欧美1区2区3区| 就去色蜜桃综合| 亚洲欧美专区| 69久久夜色精品国产7777| 风间由美一区| 精品国产亚洲在线| 亚洲天堂网在线视频| 欧美日韩国产区| 欧美大片xxxx| 国产亚洲一区字幕| 亚洲女则毛耸耸bbw| 日本不卡的三区四区五区| 久久久久99精品成人片| 91影院成人| 久久福利电影| 99香蕉久久| 国产中文字幕日韩| 亚洲第一影院| 2020久久国产精品| av官网在线播放| 综合网日日天干夜夜久久| 全国男人的天堂网| 69p69国产精品| 狠狠人妻久久久久久| 一本色道久久综合亚洲精品酒店| 亚洲国产欧美一区| 国产福利小视频| 欧美色国产精品| 国产区一区二区三| 亚洲国产美国国产综合一区二区| 一二三四国产精品| 91蝌蚪porny| youjizz.com日本| 国产一区二区福利| 一区二区三区四区毛片| 日韩国产精品久久久| 人妻有码中文字幕| 99热这里只有精品8| 野外做受又硬又粗又大视频√| 欧美国产一级| 色综合电影网| 国产真实有声精品录音| 欧美主播一区二区三区美女 久久精品人| 亚洲不卡在线| 亚洲aⅴ日韩av电影在线观看 | 午夜精品毛片| 亚洲 国产 欧美一区| 国产一区二区观看| 欧日韩一区二区三区| 在线一级成人| 欧美凹凸一区二区三区视频| 米奇精品关键词| 国产一区二区视频在线免费观看| 国产亚洲成av人片在线观黄桃| 91视频最新| 91精品入口| 国产一区二区三区色淫影院| 国产成人精品福利| 国产一区二区三区四区五区加勒比 | 好吊色视频一区二区| 日韩精品一区二| 刘亦菲久久免费一区二区| 精品日产卡一卡二卡麻豆| 亚洲av无码乱码在线观看性色| 日韩美一区二区三区| 北条麻妃一二三区| 亚洲а∨天堂久久精品喷水| 天天综合网天天综合| 亚洲精品美女在线| 电影在线一区| 视频直播国产精品| 超碰个人在线| 欧美精品激情在线| 英国三级经典在线观看| 国产精品高潮呻吟久久av野狼| 素人啪啪色综合| 91视频免费网站| 国偷自产视频一区二区久| 久久久久久欧美精品色一二三四| 国产欧美日韩精品一区二区三区 | 围产精品久久久久久久| mm131午夜| 在线免费高清一区二区三区| 欧美日韩激情视频在线观看| 日韩国产一区二| 香蕉视频xxxx| 91网站最新网址| 午夜精产品一区二区在线观看的| 中文字幕一区二区三区不卡 | 亚洲av成人片无码| 久久人人97超碰com| 美国精品一区二区| 一区二区三区美女| 在线免费观看av网址| 日韩一区二区在线观看视频播放| 天堂av在线免费| 中文字幕亚洲天堂| 女人天堂av在线播放| 日韩av日韩在线观看| 在线视频中文字幕第一页| 午夜精品久久久久久久久久久久久| 成人激情综合| 999视频在线免费观看| 亚洲日本三级| 强开小嫩苞一区二区三区网站| 日韩午夜精品| www.国产福利| 久久午夜老司机| 国产大片免费看| 日韩欧美精品中文字幕| 91久久在线播放| 欧美黑人一区| 成人欧美视频在线| 欧美午夜精品一区二区三区电影| 国产一级大片免费看| 青青草国产精品亚洲专区无| 国产精品日日摸夜夜爽| 国产精品五月天| 你懂的国产在线| 精品久久久久一区| 精品国产99久久久久久| 日本一区二区在线播放| 澳门精品久久国产| 在线不卡视频一区二区| 久久蜜桃精品| 国产激情视频网站| 亚洲综合清纯丝袜自拍| 这里只有精品9| 亚洲人成电影网站色xx| 草草视频在线| 99视频在线| 中文字幕亚洲精品乱码| 无限资源日本好片| 2014亚洲片线观看视频免费| 国产精彩视频在线| 欧美成人官网二区| 麻豆av在线免费看| 国产精品自产拍高潮在线观看| 亚洲素人在线| 亚欧无线一线二线三线区别| 国产69精品久久777的优势| 欧美黄片一区二区三区| 91精品国产品国语在线不卡| 天天综合视频在线观看| 国产精品999999| 精品国产91久久久久久浪潮蜜月| 国产精品后入内射日本在线观看| 国产激情91久久精品导航| 91视频青青草| 欧美日韩国产三级| 幼a在线观看| 91精品久久久久久久久青青| 欧美3p在线观看| 天天干天天操天天做| 国产精品美女久久福利网站| 日韩久久久久久久久久| 中文在线不卡视频| 国产精品久久久久久妇女| 亚洲人成人77777线观看| 蜜桃视频一区二区三区| 2014亚洲天堂| 91精品国产美女浴室洗澡无遮挡| 米奇精品一区二区三区| 91精品视频在线免费观看| 一本精品一区二区三区| 国产又黄又嫩又滑又白| 亚洲国产成人高清精品| 日批视频在线播放| 日本国产高清不卡| 精品久久综合| 九九久久久久久| 亚洲一区二区精品久久av| 五月婷婷六月丁香| 国产精品大陆在线观看| 欧美激情成人| 亚洲av午夜精品一区二区三区| 亚洲福中文字幕伊人影院| 日产精品久久久久久久性色| 国产精品高潮视频| 九色91在线| 欧美日韩国产大片| 黄色精品在线观看| 国产伦精品一区二区三区免| 性伦欧美刺激片在线观看| 亚洲图片第一页| 欧美一区二区三区免费视频| cao在线视频| 天堂社区 天堂综合网 天堂资源最新版| 蜜臀av性久久久久蜜臀aⅴ流畅| 成年人一级黄色片| 日韩精品视频免费| 欧美激情不卡| 激情五月宗合网| 国产精品久久午夜| 亚洲国产精品久久久久爰性色 | 中文字幕在线高清| 亚洲区一区二区三区| 国产成人免费高清| 无码人妻一区二区三区免费| 久久中文字幕一区| 欧美猛男同性videos| 91大神免费观看| 在线一区二区三区四区五区|