TypeScript是一款由微軟推出的javaspript超集,為用戶(hù)提供了豐富的spript動(dòng)作集,充分補(bǔ)充了javaspript的不足,支持為已存在的 JavaScript 庫(kù)添加類(lèi)型信息的頭文件,實(shí)用性非常的強(qiáng)。
【功能特點(diǎn)】
lambda 函數(shù)語(yǔ)法上,TypeScript 很類(lèi)似于 JScript .NET,另外一個(gè)添加了對(duì)靜態(tài)類(lèi)型,經(jīng)典的面向?qū)ο笳Z(yǔ)言特性如類(lèi),繼承,接口和命名空間等的支持的 Microsoft 對(duì) ECMA-262 語(yǔ)言標(biāo)準(zhǔn)的實(shí)現(xiàn)。
類(lèi)型批注
通過(guò)類(lèi)型批注提供靜態(tài)類(lèi)型以在編譯時(shí)啟動(dòng)類(lèi)型檢查。這是可選的,而且可以被忽略而使用 JavaScript 常規(guī)的動(dòng)態(tài)類(lèi)型。
對(duì)于基本類(lèi)型的批注是 number, bool 和 string。而弱或動(dòng)態(tài)類(lèi)型的結(jié)構(gòu)則是 any 類(lèi)型。
類(lèi)型批注可以被導(dǎo)出到一個(gè)單獨(dú)的聲明文件以讓使用類(lèi)型的已被編譯為 JavaScript 的 TypeScript 腳本的類(lèi)型信息可用。批注可以為一個(gè)現(xiàn)有的 JavaScript 庫(kù)聲明,就像已經(jīng)為 Node.js 和 jQuery 所做的那樣。
當(dāng)類(lèi)型沒(méi)有給出時(shí),TypeScript 編譯器利用類(lèi)型推斷以推斷類(lèi)型。如果由于缺乏聲明,沒(méi)有類(lèi)型可以被推斷出,那么它就會(huì)默認(rèn)為是動(dòng)態(tài)的 any 類(lèi)型。
聲明文件
當(dāng)一個(gè) TypeScript 腳本被編譯時(shí),有一個(gè)產(chǎn)生作為編譯后的 JavaScript 的組件的一個(gè)接口而起作用的聲明文件 (具有擴(kuò)展名 .d.ts) 的選項(xiàng)。在這個(gè)過(guò)程中編譯器基本上帶走所有的函數(shù)和方法體而僅保留所導(dǎo)出類(lèi)型的批注。當(dāng)?shù)谌介_(kāi)發(fā)者從 TypeScript 中使用它時(shí),由此產(chǎn)生的聲明文件就可以被用于描述一個(gè) JavaScript 庫(kù)或模塊導(dǎo)出的虛擬的 TypeScript 類(lèi)型。聲明文件的概念類(lèi)似于 C/C++ 中頭文件的概念。
類(lèi)型聲明文件可以為已存在的 JavaScript 庫(kù)手寫(xiě),就像為 jQuery 和 Node.js 所做的那樣。對(duì) ECMAScript 6 的支持TypeScript 增加了對(duì)為即將到來(lái)的 ECMAScript 6 標(biāo)準(zhǔn)所建議的特性的支持。如下為其構(gòu)想:類(lèi) (以及繼承) 模塊Arrow functions盡管標(biāo)準(zhǔn)還未準(zhǔn)備就緒,Microsoft 說(shuō)它的目標(biāo)是使 TypeScript 的特性與建議的標(biāo)準(zhǔn)看齊。
類(lèi)
支持集成了可選的類(lèi)型批注支持的 ECMAScript6 的類(lèi)。
泛型
這種語(yǔ)言的規(guī)范說(shuō)明一個(gè)未來(lái)的版本將會(huì)支持基于類(lèi)型擦除的泛型編程。與 JavaScript 的兼容性TypeScript 是 JavaScript 的一個(gè)超集。默認(rèn)情況下編譯器以 ECMAScript 3 (ES3) 為目標(biāo)但 ES5 也是受支持的一個(gè)選項(xiàng)。一個(gè) TypeScript 應(yīng)用可以利用已存在的 JavaScript 腳本。編譯后的 TypeScript 腳本也可以從 JavaScript 中使用?,F(xiàn)有框架如 jQuery 和 Node.js 等受到完全支持。這些庫(kù)的類(lèi)型聲明在源代碼中提供。支持的瀏覽器和平臺(tái)運(yùn)行于任何平臺(tái)上的任何網(wǎng)頁(yè)瀏覽器都可以運(yùn)行 TypeScript 由于它僅僅是被編譯為標(biāo)準(zhǔn)的 JavaScript。一個(gè)腳本既可以被預(yù)編譯為 JavaScript 也可以通過(guò)為 TypeScript 包含 JavaScript 編譯器實(shí)時(shí)編譯。