精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久草av在线| 国产精品超碰| **欧美大码日韩| 92福利视频午夜1000合集在线观看| 女同久久另类69精品国产| 婷婷久久免费视频| 亚洲va中文字幕| 日韩伦理一区二区三区av在线| 最近中文字幕免费观看| 亚洲午夜极品| 中文字幕日本精品| 老司机午夜免费福利| 99久久精品一区二区成人| 一区二区三区美女| 日韩视频精品| 国产精品久久久久久久av大片| 三级在线免费看| 黄色的视频在线观看| 久久精品夜色噜噜亚洲a∨| 成人a在线观看| www.com国产| 欧美日韩hd| 深夜福利亚洲导航| 国产精品无码一区二区三区免费| 一区在线不卡| 一本大道综合伊人精品热热| 女女同性女同一区二区三区按摩| 日本五码在线| 成人午夜免费av| 91在线播放国产| 亚洲av人无码激艳猛片服务器| 99热这里只有精品8| 久久精品国产亚洲精品| 好吊视频在线观看| 午夜福利一区二区三区| 免费在线观看成人| 日韩av手机在线观看| 中文字幕第28页| 自拍日韩欧美| 久久精品国亚洲| 国产精品久久久久久久av| 日韩丝袜视频| 亚洲精品电影在线观看| 污污视频网站在线| 婷婷激情成人| 在线观看91av| 欧美性受xxxxxx黑人xyx性爽| free欧美| 在线观看欧美精品| 91最新在线观看| 亚洲优女在线| 色欧美88888久久久久久影院| 久艹在线免费观看| 大香伊人中文字幕精品| 亚洲一区二区成人在线观看| 欧美日韩中文字幕在线播放| caoporn97在线视频| 亚洲情趣在线观看| 欧美美女黄色网| 午夜伦理大片视频在线观看| 一区二区三区欧美久久| 久操手机在线视频| heyzo在线播放| 欧美日韩激情网| 青青青在线播放| 久久久加勒比| 91精品国产91久久久久久一区二区 | 亚洲天堂中文在线| 精品夜夜嗨av一区二区三区| 91欧美精品成人综合在线观看| 国产口爆吞精一区二区| 国产精品一色哟哟哟| av一本久道久久波多野结衣| 天天干,夜夜操| 国产欧美日韩精品在线| 中文字幕日韩精品久久| 午夜av在线播放| 天天亚洲美女在线视频| 日本xxxxxxx免费视频| 日韩美香港a一级毛片| 56国语精品自产拍在线观看| 91精产国品一二三| 亚洲资源网站| 制服丝袜中文字幕亚洲| 欧美xxxxxbbbbb| 精品成人自拍视频| 一区二区三区 在线观看视| 多男操一女视频| 亚洲夜间福利| 国产精品日本精品| 精品国产av 无码一区二区三区| 成人国产精品免费观看动漫| 免费成人深夜夜行视频| 秋霞a级毛片在线看| 一区二区三区欧美久久| 日韩欧美在线免费观看视频| 精品国产亚洲一区二区三区| 精品无码久久久久久国产| 日韩欧美视频免费观看| 韩国精品一区二区三区| 国产精品第一第二| 亚洲欧美高清视频| 国产女人18水真多18精品一级做| 国产免费一区二区三区四在线播放 | 精品国产欧美| 亚洲欧美激情四射在线日| 91传媒免费观看| 国产精品亚洲欧美| 91久久精品在线| 国产人成在线视频| 亚洲综合色视频| 日韩av片专区| 免费视频亚洲| 国内偷自视频区视频综合| 中文字幕第三页| 91视频91自| 97久久国产亚洲精品超碰热 | 91精品美女在线| 国产在线91| 偷拍亚洲欧洲综合| 天天操精品视频| 欧美日韩有码| 国产成人精品综合久久久| 天天操天天爱天天干| 亚洲精品免费电影| 国产精品区在线| 免费国产自久久久久三四区久久| 久久久亚洲网站| 午夜精品久久久久久久爽| 国产精品久久久久影视| 男女曰b免费视频| 亚洲成aⅴ人片久久青草影院| 欧美激情视频一区| 精品女同一区二区三区| 亚洲欧洲精品一区二区三区 | 成人av电影在线网| 99久久精品99国产精品| 91精品国产99久久久久久红楼| 国产乱子伦三级在线播放| 午夜精品久久久久| 午夜免费福利影院| 亚洲一级二级| 国产91一区二区三区| 伊人在我在线看导航| 欧美日本不卡视频| 永久免费未视频| 卡一卡二国产精品| 亚洲一区二区三区欧美| 国产麻豆久久| 色伦专区97中文字幕| 中文人妻熟女乱又乱精品| 国产目拍亚洲精品99久久精品| 国产自偷自偷免费一区| 国内精品久久久久久久影视简单| 国产91露脸中文字幕在线| 国外av在线| 欧美专区日韩专区| 亚洲激情图片网| 韩国精品一区二区| 精品无码av无码免费专区| 国产一区二区高清在线| 欧美日本中文字幕| 欧美一级特黄aaaaaa| 精品免费在线观看| 一本加勒比北条麻妃| 日韩不卡在线观看日韩不卡视频| 日韩片电影在线免费观看| 国产成人福利夜色影视| 久久天堂av综合合色| 亚洲av无码国产精品永久一区| 夜色激情一区二区| 大黑人交xxx极品hd| 日韩成人一级片| 中文字幕av久久| 精品人人人人| 国产精品成av人在线视午夜片 | 一级黄色免费看| 精品一区二区三区在线观看| 91手机视频在线| xvideos.蜜桃一区二区| 欧美尤物巨大精品爽| 97超碰国产一区二区三区| 欧美一区永久视频免费观看| 日本一区二区免费在线观看| 国产欧美日韩激情| 国产精品嫩草69影院| 久久精品网址| 狠狠噜天天噜日日噜| 亚州综合一区| 成人在线播放av| 鲁鲁在线中文| www亚洲欧美| 午夜福利视频一区二区| 欧美日韩大陆在线| 免费在线不卡视频| 综合久久久久久久| 一级性生活毛片| 国产精品资源网| 热久久精品免费视频| 韩国精品一区二区三区| 一本色道婷婷久久欧美| 日韩av三区| 亚洲自拍中文字幕| 欧美日韩视频免费观看| 欧美黑人极品猛少妇色xxxxx | 美女av一区二区三区 | 日本高清久久| 国产精品678| 丁香花在线观看完整版电影| 永久免费毛片在线播放不卡| 欧美一区,二区| 欧美一区二区三区四区五区| 国产视频1区2区| 亚洲电影在线免费观看| 国产精品久久久久久久午夜| 日韩 欧美 综合| 亚洲人亚洲人成电影网站色| 亚洲午夜福利在线观看| 国产黄人亚洲片| 9l视频白拍9色9l视频| 在线视频精品| 久久亚洲国产成人精品无码区| 四虎8848精品成人免费网站| 久久久水蜜桃| 日本成人中文| 精品国产乱码久久久久久88av| 试看120秒一区二区三区| 91精品国产综合久久香蕉922| 欧美人与性动交xxⅹxx| 97视频在线观看视频免费视频| 色呦呦网站在线观看| www国产精品视频| yiren22综合网成人| 亚洲剧情一区二区| 视频国产在线观看| 亚洲国产又黄又爽女人高潮的| 亚洲大尺度视频| 日韩欧美一级二级三级| 国产成人久久精品77777综合 | 99热这里只有精品1| 在线观看91精品国产麻豆| 在线免费av网| 欧美日韩黄色一区二区| 曰批又黄又爽免费视频| 欧美丝袜丝交足nylons图片| 欧美人一级淫片a免费播放| 一本久久a久久精品亚洲| 国产嫩bbwbbw高潮| 色美美综合视频| 中文字幕在线网站| 欧美久久久久中文字幕| 99免费在线视频| 精品久久一区二区三区| 蜜桃91麻豆精品一二三区| 欧美大片在线观看一区| 日本免费一区视频| 精品视频—区二区三区免费| 天堂资源最新在线| 在线观看国产成人av片| 免费黄色在线观看| 欧美尺度大的性做爰视频| 女同视频在线观看| 97涩涩爰在线观看亚洲| 成人视屏在线观看| 国产一区二区色| 精品国模一区二区三区欧美| caoporen国产精品| 日韩电影不卡一区| 日韩欧美在线一区二区| 亚州av乱码久久精品蜜桃| 97精品国产97久久久久久粉红| 在线国产一区| 国产黄色一级网站| 麻豆精品一区二区三区| 9191在线视频| 久久久亚洲综合| 午夜激情视频在线播放| 亚洲一卡二卡三卡四卡无卡久久| 99久热在线精品996热是什么| 欧洲精品在线观看| www.亚洲欧美| 亚洲全黄一级网站| av毛片在线免费看| 欧美一级大片在线观看| 亚洲香蕉久久| 久久婷婷开心| 68国产成人综合久久精品| 欧美成人高潮一二区在线看| 免费高清不卡av| 美女搡bbb又爽又猛又黄www| 久久综合狠狠综合久久激情| 人人干在线观看| 欧美日韩国产一中文字不卡| 91精品国产乱码久久久| 亚洲精品国产精品自产a区红杏吧| 99re在线视频| 97成人超碰免| 免费观看亚洲天堂| 日韩精品av一区二区三区| 亚洲精品极品少妇16p| 国产福利视频在线播放| 国产91在线看| 黄色一级大片在线观看| 国产乱人伦偷精品视频免下载| 黄色a一级视频| 一区二区三区在线视频免费观看| 国产亚洲欧美在线精品| 欧美不卡视频一区| 视频一区二区三区不卡| 欧美亚洲另类在线| 中文在线综合| 超碰免费在线公开| 老司机一区二区三区| 亚洲av午夜精品一区二区三区| 国产精品视频你懂的| 狠狠躁夜夜躁人人爽天天高潮| 日韩写真欧美这视频| av电影在线播放高清免费观看| 97久久精品在线| 第四色在线一区二区| 欧美精品一区二区性色a+v| 蜜臀av性久久久久av蜜臀妖精| 黄色国产在线观看| 精品久久久久久| 欧美一区二区三区激情| 久热精品视频在线观看一区| 成人影院在线免费观看| 日产国产精品精品a∨| 国产精品久久久久久模特| 欧美xxxx日本和非洲| 亚洲色大成网站www久久九九| 久久免费激情视频| 日韩精品极品视频| 看黄在线观看| 精品在线视频一区二区| 在线观看视频日韩| 91精品国产高清91久久久久久| 亚洲三级在线播放| 国产特级黄色片| 另类少妇人与禽zozz0性伦| 日本一区二区三区中文字幕| 亚洲一区二区在线看| 蜜乳av一区二区| 超碰人人人人人人人| 欧美系列在线观看| 成人p站proumb入口| 国产精品91视频| 欧美日韩一二| 欧美丝袜在线观看| 国产精品福利电影一区二区三区四区 | 国产精品麻豆久久| 中文字幕第一页在线视频| 中文字幕一区二区三区不卡在线| 亚洲天堂手机在线| 粗暴蹂躏中文一区二区三区| 久久国际精品| 日韩精品综合在线| 91在线观看一区二区| 麻豆成人免费视频| 一区二区三区四区精品| 欧美成人三级| 少妇久久久久久被弄到高潮| gogo大胆日本视频一区| 日韩中文字幕在线观看视频| 亚洲午夜精品视频| www.久久草.com| 中国丰满熟妇xxxx性| 91麻豆免费在线观看| 无码人妻精品一区二区50| 中文字幕日韩综合av| 国产一区二区在线观| 国产精品专区在线| 中文字幕高清不卡| 亚洲av综合色区无码一二三区| 久久久免费电影| 加勒比久久综合| 三级黄色片播放| 精品福利樱桃av导航| jizz在线免费观看| 91文字幕巨乱亚洲香蕉| 亚洲综合精品四区| 国产探花在线视频| 日韩av在线免费| 免费一区二区三区四区| 日韩精品在线视频免费观看| 国产亚洲污的网站| av老司机久久| 日本欧美中文字幕| 你懂的一区二区| 在线免费观看麻豆| 日韩一区二区三区在线视频| 中文在线а√在线8| 在线看视频不卡| 91丨porny丨国产入口| 亚洲片av在线| 忘忧草在线影院两性视频| 在线观看日韩片| 99r精品视频| 国产免费高清av| 国产精品福利在线观看|