系統(tǒng)學(xué)習(xí) TypeScript 之一認(rèn)識 TypeScript
前言
TypeScript 很流行,這是前端從業(yè)者眾所周知的事。
TypeScript 的概念及意義
TypeScript 是由微軟開發(fā)的自由和開源的編程語言。通過在 JavaScript的 基礎(chǔ)上添加靜態(tài)類型定義構(gòu)建而成。TypeScript 通過 TypeScript 編譯器或 Babel 轉(zhuǎn)譯為 JavaScript 代碼,可運(yùn)行在任何瀏覽器,任何操作系統(tǒng)。
- TypeScript 是添加了類型系統(tǒng)的 JavaScript,適用于任何規(guī)模的項目。
- TypeScript 是一門靜態(tài)類型、弱類型的語言。
- TypeScript 是完全兼容 JavaScript 的,它不會修改 JavaScript 運(yùn)行時的特性。
- TypeScript 可以編譯為 JavaScript,然后運(yùn)行在瀏覽器、Node.js 等任何能運(yùn)行 JavaScript 的環(huán)境中。
- TypeScript 擁有很多編譯選項,類型檢查的嚴(yán)格程度由你決定。
- TypeScript 可以和 JavaScript 共存,這意味著 JavaScript 項目能夠漸進(jìn)式的遷移到 TypeScript。
- TypeScript 增強(qiáng)了編輯器(IDE)的功能,提供了代碼補(bǔ)全、接口提示、跳轉(zhuǎn)到定義、代碼重構(gòu)等能力。
- TypeScript 擁有活躍的社區(qū),大多數(shù)常用的第三方庫都提供了類型聲明。
- TypeScript 與標(biāo)準(zhǔn)同步發(fā)展,符合最新的 ECMAScript 標(biāo)準(zhǔn)(stage 3)
- TypeScript 可以編譯出純凈、 簡潔的 JavaScript 代碼,并且可以運(yùn)行在任何瀏覽器上、Node.js 環(huán)境中和任何支持 ECMAScript 3(或更高版本)的 JavaScript 引擎中。
- TypeScript 有更多的規(guī)則和類型限制,代碼具有更高的預(yù)測性、可控性,易于維護(hù)和調(diào)試;對模塊、命名空間和面向?qū)ο蟮闹С?,更容易組織代碼開發(fā)大型復(fù)雜程序。
- TypeScript 的編譯步驟可以捕獲運(yùn)行之前的錯誤。
TypeScript 的主要特征
從上面的概念和意義部分可以看出,TypeScript 的特征比較多,這里我們就幾個主要特性進(jìn)行分析。
TypeScript 是靜態(tài)類型
我們都知道,JavaScript是一門解釋型語言,沒有編譯階段,它只有在運(yùn)行時才會進(jìn)行類型檢查。
而 TypeScript 與它相反,因為 TypeScript 在運(yùn)行前還要經(jīng)過被編譯成 JavaScript 的過程,它在編譯階段就就能確定每個變量的類型,這種語言的類型錯誤往往會導(dǎo)致語法錯誤。
比如,在 JavaScript 中:
let foo = 1;
foo.split(' ');
// Uncaught TypeError: foo.split is not a function
// 運(yùn)行時會報錯(foo.split 不是一個函數(shù)),造成線上 bug
而在 TypeScript 中:
let foo = 1;
foo.split(' ');
// Property 'split' does not exist on type 'number'.
// 編譯時會報錯(數(shù)字沒有 split 方法),無法通過編譯
TypeScript 是弱類型
在這一點上,TypeScript 和 JavaScript 的表現(xiàn)是一致的,具體是指數(shù)據(jù)類型可以發(fā)生隱式轉(zhuǎn)換 ,看以下一段代碼:
console.log("1" + 1);
// // 打印出字符串 '11'
不管是在 TypeScript 中還是 JavaScript 中,輸出結(jié)果都是一樣的。
全局安裝 TypeScript
npm install -g typescript
總結(jié)
今天就主要認(rèn)識一下 TypeScript,知道它是什么、有什么用,接下來就要學(xué)習(xí)它該怎么樣了。