自學 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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...