自學 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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...