TypeScript具備類型系統,且是JavaScript的超集。它能夠編譯成普通的JavaScript代碼。 TypeScript支持任意瀏覽器,任意環境,任意系統而且是開源的。Ts主要用於解決那些問題:html
node install –g typescriptnode
"compilerOptions":git
"exclude":不包含的編譯目錄typescript
快捷鍵 ctrl+shift+p 調出命令窗口,選擇 Configure Task Runner 建立如圖所示json
參數 "args" 指代編譯的範圍數組
最經常使用的關鍵字,用來聲明對象,例如瀏覽器
var關鍵存在一些弊端,例如:模塊化
爲了解決 var 關鍵字的以上弊端,提出了 let關鍵字,基本用法和var關鍵字同樣,以下:函數
定義的變量不能夠修改ui
簡單的true/false值
浮點型的數字
在類型後面直接使用[]
使用Array泛型
enum 類型是對js類型的一個補充,使用枚舉類型能夠爲一組數值選擇一個友好的名稱
完整函數類型包含兩部分:參數類型和返回值類型
上訴寫法過於複雜,ts提供類型推斷,能夠簡化寫法,以下所示
默認參數能夠指定參數默認值,函數調用時能夠不用傳遞默認參數
可選參數在參數後用 ? 來表示,可選參數只能在必須參數後
剩餘參數表示不知道傳遞多個類型相同的參數可使用,剩餘參數只能用類型數組來表示,並在參數前加上省略號,剩餘參數只能是最後一個參數
看以下所示的代碼,調用out函數的this 對象被指定爲全局變量致使調用失敗
在ts中,函數表達式變爲使用lambda表達式( () => {} ),這樣就會在函數建立的時候就指定'this'值
編譯後的結果以下所示
ts中類的基本結構如圖所示,在ts裏,每一個成員默認爲public的,也存在 private 及 protected,private只能在自身類可用,protected可在繼承類中使用
抽象類使用abstract關鍵字來定義抽象類和在抽象類內部定義抽象方法,抽象類只能用派生類實例化,抽象方法必須在派生類中實現
面向對象最基本的模式就是對類型進行繼承擴展,如圖所示,Dog繼承了抽象類animal,實現了抽象方法say,並重寫了父類中的move方法
類的靜態成員,這些屬性存在於類自己上面而不是類的實例上
與C#或Java裏接口的基本做用同樣,ts也可以用它來明確的強制一個類去符合某種契約。以下所示,Squre類實現Shape接口。
接口能夠繼承多個接口,使用extends關鍵字來繼承多個接口,以下所示
ts像C#和Java,可使用泛型來建立可重用的組件,一個組件能夠支持多種類型的數據,ts中使用(<>)括起泛型類型
爲了開發大型的代碼程序,模塊化是必須經歷的一個過程。ts組織代碼的方式主要包括內部使用的命名空間和外部使用的模塊。
當代碼變得複雜的時候,要一種手段來組織代碼,以便於在記錄它們類型的同時還不用擔憂與其它對象產生命名衝突,這時候咱們使用命名空間。命名空間內的代碼只在命名空間內纔是可見的,對外部不可見。
模塊在其自身的做用域裏執行,在一個模塊裏的變量,函數,類等等在模塊外部是不可見的,除非你明確地使用export形式之一導出它們。相反,若是想使用其它模塊導出的變量,函數,類,接口等的時候,你必需要導入它們,可使用import形式之一。
模塊是自聲明的;兩個模塊之間的關係是經過在文件級別上使用imports和exports創建的。
任何聲明(好比變量,函數,類,類型別名或接口)都可以經過添加export關鍵字來導出,
可使用如下import形式之一來導入其它模塊中的導出內容。
CommonJS和AMD都有一個exports對象的概念,它包含了一個模塊的全部導出內容。ts模塊支持export =語法,以配合傳統的CommonJS和AMD的工做流。
export =語法定義一個模塊的導出對象。它能夠是類,接口,命名空間,函數或枚舉。
若要導入一個使用了export =的模塊時,必須使用TypeScript提供的特定語法import let = require("module")。