標籤:
TypeScript是個什麼鬼?和JavaScript有什麼關係?
TypeScript是由微軟開發的一種可快速入門的開源的程式設計語言,是JavaScript的一個超集,且向這個語言添加了可選的靜態類型和基於類的物件導向編程。能夠協助web前端開發人員編出更出色的JavaScript代碼、搞定規模可觀的JavaScript項目並為ECMAScript 6的來臨做好準備。
JavaScript是一款泛型指令碼語言,植根於開發工具的核心深處,同時在Node.js等伺服器端實現方案中也有所體現。除此之外,JavaScript還是微軟開發技術方案的關鍵組成部分,若想對office進行擴充,不使用JavaScript是不行的。
雖然JavaScript已發展得非常強悍了,但其離完美還有一大段距離,特別是在構建包含大量用戶端代碼的web應用時,JavaScript的不足之處就非常明顯。這個時候,配合TypeScript使用,JavaScript的缺陷就可完美解決。只需在TypeScript當中編寫代碼,而後將其交付至編譯器,即可將所開發代碼轉換為能夠運行在伺服器端,又可以由用戶端中的HTML進行調用的JavaScript形式方案。
TypeScript還將大量ECMAScript 6功能加入到了JavaScript當中,具體包括類與模組,並嘗試將這兩種本是同根生的語言加以進一步融合,從而滿足ECMAScript 6的標準化方法要求。通過這種方式,大家可以利用TypeScript開發出能夠為ECMAScript 6所接納的代碼,同時充分發揮TypeScript的靜態類型優勢以提升代碼安全性水平。
TypeScript允許我們面向變數進行型別宣告,從而確保A始終屬於整數而C始終屬於字串。雖然TyperScript的型別安全並不像Fortran那麼全面,但其仍然能夠定義數字與字串,並利用Boolean類型顯著改善代碼調試機制。除此之外,TyperScript還提供選項以實作類別型推斷,從而降低發生錯誤的可能性如果大家的代碼為兩個數字相加,那麼TyperScript會認定其結果始終為數字。
通過使用TypeScript,開發人員也可以將類型應用至數組中,或利用enums為特定變數名稱設定值。如果不確定自己可能使用哪種類型,則可以將變數設定為any,在這種情況下TypeScript不會推斷其具體類型、大家也不會因此遇到錯誤或者警告。TypeScript類型可以自行選擇,因此也無需在編譯或者運行之前,首先向現有代碼添加各種類型,這將有效簡化現有代碼的相關遷移工作。
需要注意的是,現有JavaScript代碼將成為TypeScript應用程式的一部分加以運行。而如果將代碼遷移到ECMAScript 6或者TypeScript文法形式下,大家即可享受到TypeScript的各種功能優勢。而如果我們使用具備TypeScript識別能力的工具,則可以擁有面向Visual Studio IntelliSense的支援能力——其能夠協助我們對函數調用中的類型進行管理。除此之外,也可利用TypeScript聲明檔案向各類常用庫及服務中快速添加類型支援,例如jQuery庫。
擁有這樣一款類型化且近似於JavaScript的語言能夠給類使用與模組構建帶來顯著簡化(與AngularJS當中的處理方式非常相近)。類型的存在能夠確保某個警告類中的所有執行個體都通過字串進行調用,這將協助我們輕鬆構建起更理想的建構函式。大家可以將這種類型化建構函式調用視為一種契約,負責定義兩段代碼之間的相互作用——並協助我們更輕鬆地在不同應用程式之間重複使用同一函數。
在函數調用當中定義類型正是建立介面結構的關鍵所在,能夠使我們的代碼更具物件導向特性。大家可以將函數元素明確定義為介面,並選擇在函數當中使用更具描述性的名稱,同時又不會影響到進行調用檢查時向IntelliSense等函數所必需的工具發出通知。
以這種方式定義類型與介面,能夠讓多位開發人員輕鬆對大型JavaScript項目加以管理。而在函數與類設計中秉持“介面至上”的契約化方法,則能夠協助大家在對應用程式中特定部分進行最佳化時不至於影響到其餘部分,或者從其他開發人員手中借用某種介面定義並直接運用到其它實現方案當中。這種方式允許我們以更為高效的方式使用諸如Git以及GitHub等工具,從而在一套持續開發模型當中輕鬆管理多個代碼分支。
如果使用的是Java語言或者C#語言,那麼對TypeScript(以及ECMAScript 6)的類實現機制一定不會感到陌生。大家可以在建構函式之內建立類,從而對方法中所使用的類型進行定義,最終利用類似的來處理各種內部對象。大家也可以利用繼承、添加功能與重寫方法等方式對類進行擴充。而更值得注意的是,TypeScript還支援常見於函數與介面當中的泛型——其能夠協助大家交付可重複使用的函數。
一旦掌握了TypeScript處理類與函數的方式, 就可以著手將其組織在模組當中,在這裡類與函數能夠被拆分至多個檔案當中。這顯然是一種非常便捷的程式碼群組織方案——舉例來說,我們可以利用幾個檔案來處理購物車當中的不同函數。在此之後,大家可以對各個子模組進行分別更新,從而在特定函數中利用調整歸零機制改善其效能水平,同時又不至於對其它函數造成影響。具備聲明檔案的JavaScript庫也可以作為模組使用,因此大家能夠在TypeScript應用程式當中充分發揮由此帶來的諸多優勢。
在大型web應用程式的開發中,對JavaScript的使用,以TypeScript作為切入點,將大大提高我們開發的效率。TypeScript不僅能夠協助我們在具備充分掌控能力且遵循可重複使用方針的前提下完成編碼工作,同時也能夠擁有一條通往ECMAScript 6的理想路徑。相信今後web前端開發,甚至整個web端所有網站的開發,都將逐步使用到TypeScript,以提高JavaScript的編程效果。
推薦學習:jQuery實戰視頻教程
使用TypeScript如何提升JavaScript編程效果?