前言:接下來暫停Flutter更新,開始更新TypeScript教程前端
更新地點: 首發於公衆號,次日更新於掘金、簡書等地方;vue
更多交流: 能夠添加個人微信 372623326,關注個人微博:coderwhywebpack
但願你們能夠 幫忙轉發,點擊在看,給我更多的創做動力。程序員
前言二:當你點開這篇文章時,我相信你已經在不少地方都已經據說過或者見過TypeScript了。web
可是可能對TypeScript依然有不少問號:TypeScript究竟是什麼?爲何每一個人都在說TypeScript怎麼怎麼好,到底好在哪裏?Angular、Vue3接連使用TypeScript進行了重構是否意味着咱們必須掌握TypeScript,它們又爲何要選擇TypeScript?我須要什麼樣的基礎才能學會或者說學好TypeScript呢?算法
沒有關係,在這個章節中咱們就來解答上面的疑惑,而且我但願你們學完這個章節能夠對一個概念有深刻的理解,就是 類型思惟。編程
不着急,下面就讓咱們和TypeScript有一場美麗的邂逅~小程序
我始終堅信:任何新技術的出現都是爲了解決以前某個技術的痛點。數組
JavaScript是一門優秀的編程語言嗎?瀏覽器
著名的Atwood定律:
優秀的JavaScript沒有缺點嗎?
JavaScript正在慢慢變好
首先你須要知道,編程開發中咱們有一個共識:錯誤出現的越早越好
如今咱們想探究的就是如何在 代碼編譯期間 發現代碼的錯誤:
function getLength(str) {
return str.length;
}
console.log("1.正在的代碼執行");
console.log("2.開始函數");
getLength("abc"); // 正確的調用
getLength(); // 錯誤的調用(IDE並不會報錯)
// 當上面的代碼報錯後, 後續全部的代碼都沒法繼續正常執行了
console.log("3.調用結束");
複製代碼
在瀏覽器下的運行結果以下:
這是咱們一個很是常見的錯誤:
Uncaught TypeError: Cannot read property 'length' of undefined
複製代碼
固然,你可能會想:我怎麼可能犯這樣低級的錯誤呢?
可是,若是咱們能夠給JavaScript加上不少限制,在開發中就能夠很好的避免這樣的問題了:
咱們已經簡單體會到沒有類型檢查帶來的一些問題,JavaScript由於從設計之初就沒有考慮類型的約束問題,因此形成了前端開發人員關於類型思惟的缺失:
因此咱們常常會說JavaScript不適合開發大型項目,由於當項目一旦龐大起來,這種寬鬆的類型約束會帶來很是多的安全隱患,多人員開發它們之間也沒有良好的類型契約。
好比當咱們去實現一個核心類庫時,若是沒有類型約束,那麼須要對別人傳入的參數進行各類驗證來保證咱們代碼的健壯性;
好比咱們去調用別人的函數,對方沒有對函數進行任何的註釋,咱們只能去看裏面的邏輯來理解這個函數須要傳入什麼參數,返回值是什麼類型。
爲了彌補JavaScript類型約束上的缺陷,增長類型約束,不少公司推出了本身的方案:
而如今,無疑TypeScript已經徹底勝出:
學習TypeScript不只僅能夠爲咱們的代碼增長類型約束,並且能夠培養咱們前端程序員具有類型思惟。
下面就讓咱們今天的主角TypeScript隆重登場吧!
雖然咱們已經知道TypeScript是幹什麼的了,也知道它解決了什麼樣的問題,可是咱們仍是須要全面的來認識一下TypeScript究竟是什麼?
咱們來看一下TypeScript在GitHub和官方上對本身的定義:
GitHub說法:TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
TypeScript官網:TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
翻譯一下:TypeScript是擁有類型的JavaScript超集,它能夠編譯成普通、乾淨、完整的JavaScript代碼。
複製代碼
怎麼理解上面的話呢?
因此,咱們能夠把TypeScript理解成一身神裝的JavaScript,不只讓JavaScript更加安全,並且給它帶來了諸多好用的裝備特效;
官方對TypeScript有幾段特色的描述,我以爲很是到位(雖然有些官方,瞭解一下),咱們一塊兒來分享一下:
始於JavaScript,歸於JavaScript
TypeScript從今天數以百萬計的JavaScript開發者所熟悉的語法和語義開始。使用現有的JavaScript代碼,包括流行的JavaScript庫,並從JavaScript代碼中調用TypeScript代碼。
TypeScript能夠編譯出純淨、 簡潔的JavaScript代碼,而且能夠運行在任何瀏覽器上、Node.js環境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。
TypeScript是一個強大的工具,用於構建大型項目
類型容許JavaScript開發者在開發JavaScript應用程序時使用高效的開發工具和經常使用操做好比靜態檢查和代碼重構。
類型是可選的,類型推斷讓一些類型的註釋使你的代碼的靜態驗證有很大的不一樣。類型讓你定義軟件組件之間的接口和洞察現有JavaScript庫的行爲。
擁有先進的 JavaScript
TypeScript提供最新的和不斷髮展的JavaScript特性,包括那些來自2015年的ECMAScript和將來的提案中的特性,好比異步功能和Decorators,以幫助創建健壯的組件。
這些特性爲高可信應用程序開發時是可用的,可是會被編譯成簡潔的ECMAScript3(或更新版本)的JavaScript。
正是由於有這些特性,TypeScript目前已經在不少地方被應用:
原本想在這個位置放上一個體驗TypeScript的程序,可是涉及到過多TypeScript的安裝流程和vscode的配置信息。
因此,我打算在下一篇中專門講解這部分的內容,包括使用webpack搭建一個能夠自動測試TypeScript代碼的環境。
So,稍安勿躁,這一個章節咱們就和TypeScript有一個簡單的邂逅就好,後面再進行深刻了解。
在以前的Flutter文章中,我說到一個話題,大前端是一羣最能或者說最須要折騰的開發者:
客戶端開發者
:從Android到iOS,或者從iOS到Android,到RN,甚至如今愈來愈多的客戶端開發者接觸前端相關知識(Vue、React、Angular、小程序);前端開發者
:從jQuery到AngularJS,到三大框架並行:Vue、React、Angular,還有小程序,甚至如今也要接觸客戶端開發(好比RN、Flutter);大前端開發就是,不像服務器同樣可能幾年甚至幾十年仍是那一套的東西。前端新技術會層出不窮。
可是每同樣技術的出現都會讓驚喜,由於他必然是解決了以前技術的某一個痛點的,而TypeScript真是解決了JavaScript存在的不少設計缺陷,尤爲是關於類型檢測的。
而且從開發者長遠的角度來看,學習TypeScript有助於咱們前端程序員培養 類型思惟,這種思惟方式對於完成大型項目尤其重要。
我也會更新一個TypeScript的系列文章,帶着你們一塊兒來學習TypeScript,而且培養你們能夠造成類型思惟。
回到咱們開篇提出的一些疑惑:
TypeScript究竟是什麼?爲何每一個人都在說TypeScript怎麼怎麼好,到底好在哪裏?Angular、Vue3接連使用TypeScript進行了重構是否意味着咱們必須掌握TypeScript,它們又爲何要選擇TypeScript?我須要什麼樣的基礎才能學會或者說學好TypeScript呢?
咱們相信上面的問題大部分你都已經有了答案。
咱們來回答一下學習這個系列文章你須要掌握什麼?
從下一篇開始,就讓咱們把TypeScript環境搭建好,開始正式學習它吧!
備註:全部內容首發於公衆號,以後除了Flutter也會更新其餘技術文章,TypeScript、React、Node、數據結構與算法等等,也會更新一些本身的學習心得等,歡迎你們關注