TypeScript系列 - 什麼是TypeScript

看了不少關於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的緣由。我能想到如下狀況:

  1. 須要在 HTML 裏大量嵌入 JavaScript 代碼,而非 HTML 和 JavaScript 分離。
  2. 熟練運用原型繼承,不喜歡 class 關鍵字
  3. 項目中大量依賴了第三方 JavaScript 類庫,而且這些類庫沒有 .d.ts 文件
  4. 「微軟雅黑」

 

參考:

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

========================================================

相關文章
相關標籤/搜索