看了不少關於TypeScript的文章,整體說來沒有很好的,一個系統的學習TypeScript的資源。html
接下來,我將給你們帶來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的同窗就更可以明白這個道理。spa
強類型語言的優點在於靜態類型檢查,歸納來講主要包括如下幾點:
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 | hongtenzone@foxmail.com B | http://www.cnblogs.com/hongten
========================================================