看了很多關於TypeScript的文章,總體說來沒有很好的,一個系統的學習TypeScript的資源。 接下來,我將給大家帶來TypeScript的系列,讓你和我一樣,一步一步的學習TypeScript,並且學以致用。 什麼是TypeScript呢 在TypeScript的官方網站上面有這樣的描述:... ...
看了很多關於TypeScript的文章,總體說來沒有很好的,一個系統的學習TypeScript的資源。
接下來,我將給大家帶來TypeScript的系列,讓你和我一樣,一步一步的學習TypeScript,並且學以致用。
什麼是TypeScript呢
在TypeScript的官方網站上面有這樣的描述:
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open source.
什麼意思呢?翻譯過來就是說TypeScript是JavaScript類型的超集,並且可以編譯為純JavaScript。
在任何瀏覽器,集群(伺服器),操作系統上面都可以運行,而且還開源。
我們怎樣解讀TypeScript呢
首先我們要知道TypeScript的爹是微軟。開發工具通常使用VSC(Visual Studio Code)。
官方網站: https://www.typescriptlang.org/index.html
TypeScript 是 JavaScript 的強類型版本。然後在編譯期去掉類型和特有語法,生成純粹的 JavaScript 代碼。由於最終在瀏覽器中運行的仍然是 JavaScript,所以 TypeScript 並不依賴於瀏覽器的支持,也並不會帶來相容性問題。
TypeScript 是 JavaScript 的超集,這意味著他支持所有的 JavaScript 語法。併在此之上對 JavaScript 添加了一些擴展,如 class / interface / module 等。這樣會大大提升代碼的可閱讀性。使用過Java的同學就更能夠明白這個道理。
強類型語言的優勢在於靜態類型檢查,概括來說主要包括以下幾點:
1) 靜態類型檢查
靜態類型檢查可以避免很多不必要的錯誤, 不用在調試的時候才發現問題 。
2) IDE 智能提示
在 TypeScript 這一類語言之前, JavaScript 的智能提示基本完全依賴 IDE 提供的猜測 (在猜測的質量上, Visual Studio 和 brackets 是我見過的最好的)。 局限性就是, 這種猜測可能並不正確, 並且也缺乏更多的輔助信息, 所以要正確使用一個類庫, 得不斷地在文檔和 IDE 之間切換, 影響心情和效率。 而 TypeScript 不僅自己寫的類庫有豐富的類型信息, 也可以對其他純 JS 項目進行類型標註 (DefinitelyTyped), 便於使用者直接在 IDE 中瀏覽 API, 效率大增。 而對於自己的或者團隊的代碼, 好處也很明顯。 團隊的代碼自己不一定能把各種介面記得滾瓜爛熟, 自己的代碼如果規模大了也很難記全, 這個時候再去翻源文件。。。
3) 代碼重構
且不說我這種經常糾結變數名的會時不時看某個變數名不順眼, 改之的情況。 有時候的確需要修改一些變數/屬性/方法名, 牽涉到屬性和方法的時候, 很多改動是跨文件的, 不像普通變數可以簡單定位 scope, 屬性方法名的重命名對於 JS 來說異常痛苦, 一方面是修改本身就不方便, 另一方面是改了還不確定該改的是不是改了, 不該改的是不是也改了。 而 TypeScript 的靜態類型系統就可以較為完美的解決這個問題 (這個地方還牽涉到一些最佳實踐, 就暫不深入了)。
4) 可讀性
對於閱讀代碼的人來講, 各種便利的類型一目瞭然, 更容易明白作者的意圖。
TypeScript 雖然是強類型語言,但是如果對象被聲明為了 any 類型,就會忽略所有的類型檢查。這種靈活的結構保證了他可以在保證整體有強類型檢查優勢的同時,在一些細節問題上保持弱類型的靈活。
TypeScript 本身是開源的,這意味著開發者可以自由修改其源代碼,同時 TypeScript 的架構設計也很優秀,提供了充分的 API 介面方便開發者進行進一步擴展。順便說一下,TypeScript 編譯器本身是用 TypeScript 開發的。構建流程是先用舊版本的 TypeScirptCompiler。js 將新版本的 TypeScript Language 的 TypeScript源代碼編譯成新的 TypeScriptCompiler。js,聽起來很厲害的樣子。
由於其開源性,通過 TypeScript Compiler API,開發者可以自己實現編譯器(比如添加增量編譯和自動編譯,大幅提升編譯速度),自定義語法檢查,以及自定義輸出結構等。 由於編譯器核心靈活的結構,開發者只需要簡單的添加一些代碼,就可以在 IDE 中支持 TypeScript 的諸多特性。
白鷺引擎是基於 TypeScript 的開源 HTML5 游戲引擎。白鷺引擎的後續版本會利用這些特性不斷完善引擎自身。舉例,我們的 IDE Egret Wing 就利用了 TypeScript Service API 實現了了代碼智能提示等功能。文檔生成工具也是通過擴展 TypeScript Compiler API 實現的。
總結:
我認為 TypeScript 是一項非常值得學習的新技術,由於他是 JavaScript 的超集,對 JavaScript 開發者來說入門門檻很低(相對於 Dart / CoffeeScript 等其他 JavaScript 變種來說 )。
如果一定要找出幾個不用 TypeScript的原因。我能想到以下情況:
- 需要在 HTML 里大量嵌入 JavaScript 代碼,而非 HTML 和 JavaScript 分離。
- 熟練運用原型繼承,不喜歡 class 關鍵字
- 項目中大量依賴了第三方 JavaScript 類庫,並且這些類庫沒有 .d.ts 文件
- “微軟雅黑”
參考:
https://www.zhihu.com/question/21879449
https://www.zhihu.com/question/28016252/answer/39056940
========================================================
More reading,and english is important.
I'm Hongten
大哥哥大姐姐,覺得有用打賞點哦!多多少少沒關係,一分也是對我的支持和鼓勵。謝謝。
Hongten博客排名在100名以內。粉絲過千。
Hongten出品,必是精品。
E | [email protected] B | http://www.cnblogs.com/hongten
========================================================