1.為啥會(huì)出現(xiàn)TypeScript?
- 帶有類型的JavaScript超集
為什么已經(jīng)有JavaScript了,還要再來(lái)一個(gè)TypeScript呢?
首先語(yǔ)言分為兩個(gè)極端:
- 一個(gè)強(qiáng)調(diào)簡(jiǎn)單方便
- 一個(gè)強(qiáng)調(diào)功能強(qiáng)大
而JS最早設(shè)計(jì)出來(lái)就是為了在web端實(shí)現(xiàn)一些簡(jiǎn)單的反饋,或者簡(jiǎn)單的數(shù)據(jù)調(diào)驗(yàn)發(fā)送給服務(wù)器,主要強(qiáng)調(diào)的就是簡(jiǎn)單方便,而Java就是沖著企業(yè)開(kāi)發(fā)設(shè)計(jì)的,主打功能強(qiáng)大,那么它功能強(qiáng)大,所帶來(lái)的就是比較復(fù)雜,強(qiáng)調(diào)多線程,強(qiáng)調(diào)安全性。但是逐漸的更多人對(duì)JS的期望比較大,期望能搞出來(lái)iOS、Android、等等。但是因?yàn)榍岸说娜珬UZ(yǔ)言也就JS這一種,很多人就感覺(jué)比較頭疼,這時(shí)候微軟就站出來(lái)了,開(kāi)發(fā)了一個(gè)TypeScript的語(yǔ)言,用來(lái)彌補(bǔ)JavaScript的缺點(diǎn),既強(qiáng)調(diào)簡(jiǎn)單好用,又強(qiáng)調(diào)安全性等等。
2.TypeScript有啥好用的?
100%兼用JavaScript代碼,無(wú)需修改平滑遷移

ES5所具備的東西ES6一個(gè)不落
TypeScript在ES6的基礎(chǔ)之上,又做了一些改變
這也就是JavaScript超集的概念
為構(gòu)建大型應(yīng)用而生,小型程序也同樣適用
強(qiáng)大的類型系統(tǒng),靜態(tài)類型檢查能力
強(qiáng)大的類型系統(tǒng),靜態(tài)檢查能力
比如新建一個(gè)js
let a =12;
a='english'

js這里是不報(bào)錯(cuò)的,甚至可以運(yùn)行起來(lái)
如果新建一個(gè)ts,也將這串代碼寫進(jìn)去

ts就會(huì)提示你,我記得a以前是數(shù)字啊,你這里怎么又給我來(lái)個(gè)字符串啊

如果寫一個(gè)函數(shù),寫了個(gè)字符串,但是希望實(shí)現(xiàn)求和

使用node編譯之后的效果是這樣的

而使用TS之后就不會(huì)有這個(gè)情況,因?yàn)門S是強(qiáng)類型語(yǔ)言,可以定義類型

豐富的class拓展功能
ES6之前JS是沒(méi)有class這個(gè)概念的,在ES6引入了class的概念,但是沒(méi)有引入完全
而TS拓展了JS原有的class的功能,Java有的class功能,TS基本都有,Java沒(méi)有的TS也添加了一些


我們寫一段js代碼,在里面定義了一個(gè)不想被別人更改的值,但是事實(shí)發(fā)現(xiàn),還是能夠被更改的

但是在TS中,你定義了一個(gè)私有的屬性,在外部是無(wú)法訪問(wèn)的,只能在內(nèi)部修改


添加了系統(tǒng)級(jí)設(shè)計(jì)能力<協(xié)調(diào)開(kāi)發(fā)>

學(xué)Java的對(duì)interface肯定不陌生,就是在實(shí)現(xiàn)這個(gè)功能之前就把期望寫明白
abstract也是個(gè)規(guī)范,提前定義好規(guī)范
畢竟好的代碼是不用寫注釋的
生態(tài)圈廣泛支持,開(kāi)源項(xiàng)目的新選擇
主流框架都支持,React、Vue、WebPack、Node.js、angular....