TypeScript -- JavaScript的救贖
TypeScript的設計目的應該是解決JavaScript的“痛點”:弱類型和沒有命名空間,導致很難模塊化,不適合開發大型程序。另外它還提供了一些語法糖來幫助大家更方便地實踐面向對象的編程。
那先來看看TypeScript是如何解決這兩個問題的。
一. 編譯時的強類型
TypeScript設計了一套類型機制來保證編譯時的強類型判斷。
最簡單的,你可以申明變量的類型,那麽任何其他類型的賦值將會引起編譯錯誤。
例如
var foo: string;
foo = true; //error: Cannot convert ‘boolean‘ to string
有意思的是,類似於C#的var變量聲明,TypeScript會對賦值的變量進行類型推斷
例如
var bar = 0;
bar = ‘‘; //error: Cannot convert ‘string‘ to ‘number‘
強類型還有一個最大好處就是智能提示,例如你可以知道當前變量具有哪些屬性和方法
二. 模塊化
利用TypeScript的關鍵詞module,可以達到類似於命名空間的效果,而export可以控制是否被外部訪問,舉個例子
從這個例子可以看出module可以嵌套,訪問時用‘.‘作分隔符,也可以用‘.‘作為分隔符來簡寫module的嵌套,只有帶export關鍵詞的才可以被外部訪問,module可以合並,但是非export的對象在其他module下,即使是同一個名稱,也不能被訪問,如FuncA()。
其他的優點
容易上手
個人覺得TypeScript的一個設計亮點就是它並沒有拋棄JavaScript的語法另起爐竈,而是做成了JavaScript的超集(這個功勞應該記在Anders上),這樣任何合法的JavaScript的語句在TypeScript下都是合法的,也就是說學習成本很低,如果你對JavaScript有比較深入的了解,那麽其實可以很快的上手TypeScript,因為它的設計都是針對JavaScript的使用習慣和慣例。
已有的類庫可以很方便的使用
類似於C的頭文件,TypeScript允許你定義一些聲明,聲明已有的變量和類型,那麽你可以很方便的用強類型的方式去調用已有的類庫。
語法糖
TypeScript可以實現類,接口,枚舉,泛型,方法重載等,用簡潔的語法豐富了JavaScript的使用。
TypeScript -- JavaScript的救贖