自學 TypeScript 第二天 編譯選項

来源:https://www.cnblogs.com/LiuSan/archive/2022/11/17/16898884.html
-Advertisement-
Play Games

前言: 昨天我們學習了 TS 的數據類型,不知道大家回去以後練習沒練習,如果你練習了一定會發現一個問題,我們的 TS 好像和 JS 不太一樣 JS 寫完之後直接就可以放到頁面上,就可以用了,而我們的 TS 需要用 tsc 編譯一下,編譯為 JS 才能在頁面中使用 這時就會有同學說了,誒呀,六扇老師, ...


前言:

昨天我們學習了 TS 的數據類型,不知道大家回去以後練習沒練習,如果你練習了一定會發現一個問題,我們的 TS 好像和 JS 不太一樣

JS 寫完之後直接就可以放到頁面上,就可以用了,而我們的 TS 需要用 tsc 編譯一下,編譯為 JS 才能在頁面中使用

這時就會有同學說了,誒呀,六扇老師,這也太麻煩了吧!

別急,好好閱讀今天的文章,關於 TS 的編譯選項

編譯選項:

自動編譯文件:

編譯文件時,使用   -w  指令後, TS 編譯器會自動監視文件的變換,如果 TS 文件變化會自動重新進行編譯

tsc xxx.ts -w

圖片示例:

自動編譯成功了,問題也就來了,我們發現這樣雖然是不用手動編譯了,但我有兩個 TS 文件呢,我需要打開兩個視窗,輸入兩遍  tsc xxx.ts -w 那我要是有十個呢,百個呢?

自動編譯整個項目:

我們在實際開發,寫項目的時候,都看過配置文件吧,我們的 TS 也有,叫 tsconfig.json

tsconfig.json 是一個 JSON 文件,添加完配置文件之後,只需要在命令行中輸入 tsc -w 即可完成對整個項目的自動編譯

那怎麼創建 tsconfig.json 文件呢,有的編輯器會自帶,右鍵就可以創建了

如果不自帶,自己新建文件創建就行了,創建完的 tsconfig.json 文件放那就行,打開命令行直接輸入 tsc -w 

這時我們項目下的所有 TS 文件都會被自動編譯

tsconfig.json的配置選項:

雖然整個項目都被編譯了,但我們正常開發的時候肯定是用不到整個項目編譯的,都是指定某個文件下,或幾個文件,這時就需要配置選項了

include:

是我們最常用的配置選項,指定被編譯文件的目錄

預設值: [ " **/* " ] 

 ** 表示 任意目錄  * 表示 任意文件 " src/**/* " 就表示 src 下的任意目錄任意文件 

exclude:

上邊說了, include 表示包含指定的意思,而我們的 exclude 正好相反,表示不包含

不希望被編譯

什麼意思呢,比如說我們在 src 裡面又新加了一個 hello 文件夾,裡面有一個 ts 文件,這時在執行那肯定都被編譯,但我不想讓 hello 目錄下的 ts 文件被編譯 怎麼做

如圖,只有 src 目錄下的 app.ts 被編譯了

 exclude 是可選的,一般的話不需要寫,它預設值是 ["node_modules","bower_commponents","jspm_packages"] 

extends:

定義被繼承的配置文件

”extends“:”./configs/base“

當前配置文件中會自動包含 config 目錄下 base.json 中的所有配置信息

files:

指定被編譯文件的列表,和 inclued 差不多 不過一個是文件 一個是目錄

"files":[

"core.ts",

"sys.ts",

.....

]

compilerOptions:

conmpilerOptions 決定了編譯器如何對我們的 ts 文件進行編譯

裡面有很多的子選項

target

用來設置 ts 代碼的目標版本

可選值:

ES3,ES5,ES5/ES2015,ES7/ES2016,ES2017,ES2018,ES2019,ES2020,ESNext

語法: "compilerOptions":{ "target": "ES3", }

 

 

 module

用來指定使用的模塊化規範

可選值:

none,commonjs,ES5/ES2015,ES7/ES2016,amd,system,ES2020,ESNext

語法:

"compilerOptions":{ "module": "ES2015", }
lib

用來指定項目中所要用的庫

一般情況下不需要改,正常在瀏覽器當中運行的代碼 lib 是不需要設置的

語法:

"compilerOptions":{ "lib": ["es5","es6"."dom".....], }
outDir

我們編譯完 ts 生成 js 文件之後,我們的 js 文件是和 ts 文件在一起的,在正常開發的時候我們不希望它倆生成在同一個文件下邊,就用到 outDir 了

語法:

"compilerOptions":{ "outDir": "./dist“, }

outFile

可以將我們的代碼合併為一個文件

語法:

"compilerOptions":{ "outFile": "./dist/app.js“, }

allowJs  chenckJs removeComments noEmit noEmitOnError

allowJs 意思是,是否對我們的 js 文件進行編譯,預設是 false

chenckJs 意思是,是否檢查 js 代碼符合 ts 語法規範,預設是 false

removeComments 意思是,是否移除註釋 noEmit 意思是,執行編譯,但不生成編譯之後的文件,通常用來檢查代碼規範的

noEmitOnError 意思是,當有錯誤的時候不生成編譯後的文件,避免錯誤代碼編譯

接下來的選項都是和 TS 語法檢查相關的

alwaysStrict

我們都知道在我們寫 js 代碼的時候,都會有一個嚴格模式,在前邊加上 “use strict” 就行了,那用 ts怎麼加呢,設置的就是 alwaysStrict

語法:

"alwaysStrict":false (預設是 false)

noImplicitAny

前文說了,當 ts 中出現沒設定類型的變數時候,會預設為any noimolictAny為true之後則不允許該值是 any

語法:

"noImplicitAny": true (預設是 false)

noImplicitThis

不允許不明的 this。我們在寫函數的時,有時候函數的 this 不明,noImplicitThis 設置為 true 可以防止不明的 this 編譯

語法:

"noImplicitThis":true (預設是 false)
strictNullChecks

嚴格的檢查空值

語法:

"strictNullChecks": true(預設是 false)
strict

ts 配置中所有嚴格檢查的總開關,值為 ture 上邊的就可以都不寫了,全部為 ture,false 同理

語法:

"strict": false(預設是 false)

開發建議為 true ,開啟所有的嚴格檢查,使我們的代碼更嚴謹,不想要那個檢查再單獨設置為 false

好關於配置選項我們就先講這麼多,其實除此之外還有許多的配置,感興趣的大家可以去查查官方文檔,這裡是六扇有伊人我們明天再見!

個人博客鏈接:http://blog.qianbaiyv.cn/get/my/blog/details/2311887075%40qq.com/150

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 摘要:一文帶你細數幾種ETCD服務異常實例狀態。 本文分享自華為雲社區《【實例狀態】GaussDB ETCD服務異常》,作者:酷哥 。 首先確認是否是虛擬機、網路故障 虛擬機故障導致ETCD服務異常告警 問題現象 管控面上報etcd服務異常告警,虛擬機發生重啟,熱遷移、冷遷移,HA等動作。 問題分析 ...
  • 最近,我們袋鼠雲的UED部⻔小伙伴們,不聲不響地⼲了⼀件⼤事——升級了全新設計語言「數棧UI5.0」。 眾所周知,用戶在使用產品時,是一個動態的過程,用戶和產品之間進行交互的可用性,能否讓用戶愉悅、快速地在產品內達成目的,直接影響用戶使用產品的體驗。 在設計中,有一個廣泛的經驗法則被稱為「尼爾森十大 ...
  • Babelfish for PostgreSQL開源已快一月,不過全網還沒有實踐者總結。今天我們就測試看看,Babelfish到底是如何部署與使用的! ...
  • 現在要是說mysql是什麼東西,就不禮貌了 雖然有的同學沒有進行系統的深入學習,但應該也有個基本概念 【不瞭解也沒關係,後續會進行mysql專欄講解】簡單來說,存儲數據的 學習mysql,就要先安裝它 上官網 : https://dev.mysql.com/downloads/mysql/ 打開網址 ...
  • 11月15日,HMS Core手語服務在2022(第二十一屆)中國互聯網大會 “互聯網助力經濟社會數字化轉型”案例評選活動中,榮獲“特別推薦案例”。 經過一年多的技術迭代和經驗積累,HMS Core手語服務已與多個行業的開發者合作,將AI手語翻譯能力應用在了教育、社交、新聞、政務辦理等場景,助力開發 ...
  • 項目同步git:https://gitee.com/lixin_ajax/vue3-vite-ts-pinia-vant-less.git 覺得有幫助的小伙伴請點下小心心哦 為避免贅述,過於基礎的點會直接省略或貼圖,比如創建文件夾/文件的路徑/路由一類 配置相應功能,也儘量只貼相關代碼,並不代表整個 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 視頻通話SDK用的即構的,uniapp插件市場地址 推送用的極光的,uniapp插件市場地址 即構音視頻SDK uniapp插件市場的貌似是有些問題,導入不進項目,直接去官網下載,然後放到項目下的 nativeplugins 目錄下,在配 ...
  • 在工作流頁面中,除了特定的業務表單信息外,往往也需要同時展示通用申請單的相關信息,因此在頁面設計的時候需要使用一些組件化的概念來實現動態的內容展示處理,本篇隨筆介紹Vue3+TypeScript+ElementPus的前端工作流模塊中實現統一的表單編輯和表單詳情查看處理。 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...