中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JavaScript 的生產(chǎn)力工具: TypeScript

TypeScript 目前已經(jīng)迭代到 1.4 版本, 即將到來(lái)的 1.5 又搭載了更多好用的特性, 包括與 Angular 團(tuán)隊(duì)合作增加的裝飾器 (Decorators).

很高興的是看到國(guó)內(nèi)不少一線前端對(duì) TypeScript 還是抱以比較積極的態(tài)度, 但也有很多同學(xué)提出了一些質(zhì)疑和批評(píng). 我寫這篇文章的目的就是希望能以自己的理解對(duì)常見(jiàn)的誤解做一個(gè)說(shuō)明.

TypeScript 是前端工程師的工具

很多同學(xué)會(huì)認(rèn)為 TypeScript 是為了吸引 (或者只能吸引) 一些掌握了 C#/Java 的后端工程師. 但事實(shí)上, TypeScript 的初衷我想是為了適應(yīng)更大規(guī)模的 Web 應(yīng)用前端開發(fā) (當(dāng)然, 它也可以被用到 NodeJS 上).

經(jīng)常會(huì)看到有同學(xué)把 TypeScript 和 CoffeeScript 放在一起比較, 我認(rèn)為是不大恰當(dāng)?shù)? TypeScript 是 JavaScript + 類型系統(tǒng), 而 CoffeeScript 是 Python/Ruby 口味的 JavaScript. 進(jìn)入兩個(gè)項(xiàng)目的官網(wǎng), 很容易就可以從它們宣傳的重點(diǎn)上看出區(qū)別.

TypeScript 是為了解決 Scalable 的問(wèn)題. 而對(duì)于 CoffeeScript, 我想很大程度上是因?yàn)樽髡哒J(rèn)為:

Underneath that awkward Java-esque patina, JavaScript has always had a gorgeous heart.

但老實(shí)說(shuō)我挺喜歡 JavaScript 的語(yǔ)法風(fēng)格.

TypeScript 是 JavaScript 的工具

文章標(biāo)題其實(shí)很明確地表達(dá)了我對(duì) TypeScript 的看法, 它 (確切地說(shuō)是 TypeScript 的中的 Type) 是 JavaScript 的工具, 不應(yīng)該被作為一門新的語(yǔ)言來(lái)對(duì)待.

靈活 vs 健壯

有同學(xué)說(shuō), 就喜歡 JavaScript 弱類型的靈活, 認(rèn)為在 JavaScript 上加上類型會(huì)削弱這種靈活性. 我自己雖然不是 JavaScript 入門編程的, 但第一門精通的語(yǔ)言還是 JavaScript, 它也是我最喜歡的語(yǔ)言之一. 我也非常理解這樣的心情: 本來(lái)直接 return 一個(gè)對(duì)象字面量就可以, 現(xiàn)在非要我去定義一個(gè) interface, 這不是沒(méi)事找事么.

確實(shí), 對(duì)于一個(gè)規(guī)模不大的項(xiàng)目來(lái)說(shuō), 直接書寫我們熟悉的 JavaScript 也不容易出錯(cuò), 并且更加靈活. 但是, 如果我們將項(xiàng)目規(guī)模擴(kuò)大: 一方面由于 JavaScript 弱類型的性質(zhì), 一些 Lint 能夠檢測(cè)到一部分問(wèn)題 (比如局部變量的命名和使用), 卻在更多的時(shí)候無(wú)能為力 (比如對(duì)象屬性); 團(tuán)隊(duì)之間的協(xié)作花費(fèi)大量時(shí)間查閱文檔; 如果需要重構(gòu)代碼, 重命名, 都費(fèi)時(shí)費(fèi)力, 還可能留下大量隱患. 這個(gè)時(shí)候再想想 C# 和 Java, 是不是會(huì)覺(jué)得爽歪歪了.

而且, 針對(duì) JavaScript 的特點(diǎn), TypeScript 有一個(gè)類型 any, 并且在 1.4 中增加了聯(lián)合類型 (Union Types) 以及配套的類型收窄 (Type Guards), 一方面盡可能地保留 JavaScript 的靈活性, 另一方面也將靜態(tài)類型語(yǔ)言在工程上的優(yōu)勢(shì)保留下來(lái).

比如:

function foo(strs: string|string[]) {    if (typeof strs === 'string') {        // it's a string    } else {        // it's an array    }}

總之, 靈活是好事, 但是也不必排斥 TypeScript 的類型系統(tǒng), 畢竟確實(shí)在規(guī)模較大的項(xiàng)目上, 它對(duì)于代碼健壯性的價(jià)值是顯而易見(jiàn)的.

編程風(fēng)格

也有同學(xué)說(shuō)喜歡 JavaScript 的多范式編程風(fēng)格. 畢竟 JavaScript 也算大半個(gè)函數(shù)式編程語(yǔ)言, TypeScript 會(huì)不會(huì)削弱了 JavaScript 函數(shù)的地位呢? 當(dāng)然不會(huì). F#/Haskell 也有類型系統(tǒng), 但它們都是不折不扣的函數(shù)式編程語(yǔ)言.

靜態(tài)類型與編程風(fēng)格并不沖突, 不僅如此, TypeScript 還能讓 ES3/5 提早用上 ES6 的箭頭函數(shù) (Arrow Function), 函數(shù)式編程更加暢快了.

未來(lái)

我想 Angular 2 宣布使用 TypeScript 對(duì)于其生態(tài)可謂是非常重要的一筆. 同時(shí)微軟谷歌兩家聯(lián)手, 也為 ES7 中類型的回歸 (ES4 的流產(chǎn)) 埋下了伏筆. JavaScript 之父 Brendan Eich 也在 Twitter 上表示:

Everyone wants types. I was clearly ahead of time with ES4.

現(xiàn)在開始寫 TypeScript 吧!

--

我在 GitHub 上創(chuàng)建了 TypeScript 中文指南, 希望能幫有興趣的同學(xué)快速入門. 目前還在編寫中, 如果大家有什么希望看到的內(nèi)容或者自己的想法歡迎創(chuàng)建 issue.

掃碼關(guān)注w3ctech微信公眾號(hào)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
10種能夠編譯成 JavaScript 的腳本語(yǔ)言
跟著CodeMonkey,和全球250萬(wàn)名孩子一起玩編程
2017年,你需要學(xué)習(xí)的JavaScript框架和主題
2017年薪酬最高的15門編程語(yǔ)言 GO奪冠
半天掌握TypeScript,感覺(jué)就像寫Java
2016年里做前端是怎樣一種體驗(yàn)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服