搜尋
首頁web前端js教程TypeScript:TSConfig 選項入門

什麼是 TypeScript?

TypeScript 是 JavaScript 的超集。這意味著您可以在 TypeScript 中使用 JavaScript 語法,因此最好在開始使用 TypeScript 之前學習 JavaScript。有了這個免責聲明,讓我們來談談 TypeScript 是什麼以及如何為 TypeScript 設定專案。

根據TypeScript 的文檔,「TypeScript 是一種基於JavaScript 構建的強類型程式語言。」[1] TypeScript 語言添加了類型語法來幫助您在開發過程中及早發現錯誤,並在開發團隊成長的過程中保持保障措施隨著專案規模的擴大。 TypeScript 可讓您定義變數的資料類型和物件的介面。 TypeScript 使用這些定義來檢查您的程式碼在編譯時是否有錯誤,並在您不遵循事先設定的定義時通知您。

如果您在想,「既然我一開始就可以更加小心,為什麼我需要編寫更多程式碼來使用TypeScript?」你沒有錯,但人類會犯錯,而且我們在長時間工作時經常會犯錯誤。如果同樣的想法應用在施工中,那麼額外的鷹架和安全程序將需要更多的工作和時間,而我們只要在工地小心一點就可以節省時間。

TypeScript: Getting Started With TSConfig Options

看到了嗎?為了節省時間,這位屋頂工人可能浪費了更多的時間和資源。這只是一名工人。想像一下,隨著更多團隊成員的加入,一個工作團隊正在處理一個專案。這就是軟體開發的現實;從長遠來看,制定一個計劃來發現這些錯誤將對您和您的團隊有所幫助。

TypeScript 範例

以下範例來自 TypeScript 文件[2],但註解是我的。

打字稿:

function greet(person, date) {
  console.log(`Hello ${person}, today is ${date}!`);
}

greet("Brendan");

TypeScript 將在呼叫greet 時擷取錯誤。我們定義greet 來接收兩個參數:person 和date,我們只提供person。 TypeScript 在編譯程式碼時會捕獲此錯誤,並讓您知道它需要第二個參數。在某種程度上,TypeScript 可以被視為程式碼的 linter,以便在您工作時捕獲這些錯誤,但我們可以利用類型語法來進一步幫助我們。

function greet(person: string, date: Date) {
  console.log(`Hello ${person}, today is ${date.toDateString()}!`);
}

greet("Maddison", Date());

現在,我們為 toDateString 方法的兩個參數新增一個類型,person 必須是字串,date 必須是 Date 物件。當在第二個參數 Date() 之前不使用關鍵字 new 來呼叫greet時,TypeScript 會讓您知道它收到了一個字串,而不是日期參數的 Date。現在,您可以在進一步開發之前修復錯誤,並且在測試時收到意外輸出時必須追溯到此錯誤。

現在您已經看到了 TypeScript 的實際應用,讓我們檢查一下設定項目以使用它的後續步驟。

配置 TypeScript 的編譯器:tsconfig.json

預設的 TypeScript 編譯可能不是您想要的,有一種方法可以根據您的需求自訂 TypeScript,類似於使用 linter,但它可以做更多的事情。

第一步是在專案的根目錄中建立一個 tsconfig.json 檔案。文件告訴 TypeScript 編譯過程中應包含哪些檔案。在 tsconfig.json 中,如果您希望使用 JSON 檔案的「includes」鍵來獲得更多特異性,則可以指定應包含在根目錄中的目錄。

function greet(person, date) {
  console.log(`Hello ${person}, today is ${date}!`);
}

greet("Brendan");

現在,我們來談談「compilerOptions」。相信我,有很多選擇可供選擇。這是一件好事,但如果這是您第一次使用 TypeScript,也會很可怕。我將分解一些流行的選擇來幫助您入門:

允許

function greet(person: string, date: Date) {
  console.log(`Hello ${person}, today is ${date.toDateString()}!`);
}

greet("Maddison", Date());

此選項允許將 JavaScript 檔案匯入到您的專案中,而不僅僅是 TypeScript。通常,TypeScript 假定所有導入都是 TypeScript,並且會對導入的 JavaScript 檔案給予錯誤,但此選項允許我們使用這些導入,並且在同一儲存庫中使用 TypeScript 和 JavaScript 時會很有幫助。

esModuleInterop

{
  "include": ["src/**/*"]
}

ES6 中的命名空間導入只能是一個對象,但由於這與使用不帶 .default 的 require 相同,因此我們允許 TypeScript 將對象視為函數。當 TypeScript 將程式碼轉換為 JavaScript 時,此選項將解決此問題,而不必小心我們的導入。

目標

{
  "compilerOptions": {
    "allowJs": true
  }
}

當 TypeScript 將程式碼轉換為 JavaScript 時,此選項會變更哪些 JS 功能被降級以及哪些功能保持不變。 es6 是一個不錯的選擇,因為大多數現代瀏覽器都支援 ES6,但您可以為此選項指定任何版本的 ECMAScript 以滿足您的需求。

嚴格的

{
  "compilerOptions": {
    "esModuleInterop": true
  }
}

此標誌支援許多不同的類型檢查行為。這將帶來更強大的程式碼庫和更少的錯誤。如果您想排除某些類型檢查行為,請檢查文件 [3] 並將其選項設為 false。如果您只想要一些類型檢查行為,我會考慮打開它們而不是使用 strict。

輸出目錄

{
  "compilerOptions": {
    "target": "es6"
  }
}

當 TypeScript 將程式碼轉換為可用的 JavaScript 時,此選項會將這些檔案傳送到此目錄中。

不發射

function greet(person, date) {
  console.log(`Hello ${person}, today is ${date}!`);
}

greet("Brendan");

此選項會停止發出所有已轉譯的 JavaScript 檔案。這可能聽起來很愚蠢,因為我剛剛告訴您有關 outDir 的信息,但 TypeScript 始終會發出文件,而 outDir 會將文件定向到正確的位置。當您已經使用 Babel 或 Webpack 等其他工具來轉譯和捆綁代碼時,noEmit 就會發揮作用。在這種情況下發出意味著創建無用的 JavaScript 檔案。

結論

給你了。這七個選項可協助您設定 TypeScript 配置以及 TypeScript 如何協助您建立更穩定的程式碼庫。我建議閱讀 Matt Pocock 的“TSConfig Cheat Sheet”,以了解更多流行的選項以放入 tsconfig.json 中,並在實現任何這些選項之前始終參考 TSConfig 上的 TypeScript 文件。

編碼快樂!
泰勒·邁耶

資料來源:

[1] https://www.typescriptlang.org/

[2] https://www.typescriptlang.org/docs/handbook/2/basic-types.html

[3] https://www.typescriptlang.org/tsconfig/

[4] https://www.totaltypescript.com/tsconfig-cheat-sheet

以上是TypeScript:TSConfig 選項入門的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript數據類型:瀏覽器和nodejs之間是否有區別?JavaScript數據類型:瀏覽器和nodejs之間是否有區別?May 14, 2025 am 12:15 AM

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScript評論:使用//和 / * * / * / * /JavaScript評論:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具