新聞中心
JavaScript可能是現(xiàn)代網(wǎng)絡(luò)的事實(shí)上的語(yǔ)言,但長(zhǎng)期以來(lái),它也是我選擇腳本編寫(xiě)的語(yǔ)言。 使用Python進(jìn)行編碼很有趣,但是如果我有一些自動(dòng)化的東西,我會(huì)去用node。 我選擇的服務(wù)器端語(yǔ)言曾經(jīng)是C#,但如今它雖然功能強(qiáng)大,但感覺(jué)卻很笨拙。 我曾經(jīng)天真的將Node描述為"泛濫成災(zāi)",它滿足了我編寫(xiě)的所有內(nèi)容的需求。 我甚至可以用多種不同的方式用JavaScript編寫(xiě)Android和iOS應(yīng)用程序。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、晉中網(wǎng)絡(luò)推廣、微信小程序、晉中網(wǎng)絡(luò)營(yíng)銷、晉中企業(yè)策劃、晉中品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供晉中建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
并不是說(shuō)它是適用于一切的完美工具,但是多年來(lái)我一直為我服務(wù)。 我一直在諷刺地承認(rèn)在家庭主力馬網(wǎng)上出現(xiàn)的缺陷,包括加里·伯恩哈特(Gary Bernhardt)嘲諷的" Wat?"。 閃電般的談話讓我仍在思考。 如果您以前從未看過(guò)它,請(qǐng)立即停止閱讀并繼續(xù)觀看。 您可以稍后感謝我。
閃電般的談話已成為我推薦給前端開(kāi)發(fā)人員的推薦閱讀清單(查看清單還是消耗清單?)的一部分,還有喬納森·克里默的" 23世紀(jì)JavaScript架構(gòu)"。 盡管自ES6問(wèn)世以來(lái),上一篇文章中的某些內(nèi)容似乎是多余的,但是它對(duì)于解釋JavaScript所需的思路還有很長(zhǎng)的路要走,這需要從"常規(guī)"編程語(yǔ)言(如果有的話)轉(zhuǎn)變思維方式。 僅那篇文章是我5年前開(kāi)始自己的JavaScript Odyssey的大部分原因。
那么,為什么我現(xiàn)在揚(yáng)言要離開(kāi),再也不回來(lái)了? 答案很簡(jiǎn)單。 打字稿。
什么是Typescript?
我假設(shè)您聽(tīng)說(shuō)過(guò)Typescript,但如果沒(méi)有,請(qǐng)嘗試總結(jié)一下:Typescript是強(qiáng)類型的Javascript。 它添加了您期望強(qiáng)類型語(yǔ)言的功能,并且需要一個(gè)編譯步驟(從技術(shù)上來(lái)說(shuō)是"翻譯")才能將Typescript轉(zhuǎn)換為JavaScript。 這是因?yàn)闉g覽器不了解Typescript。 從技術(shù)上講,Typescript不會(huì)添加任何新的運(yùn)行時(shí)功能,而是為開(kāi)發(fā)人員添加功能。
我聽(tīng)說(shuō)有人形容Typescript是喜歡它還是討厭它,但是我還沒(méi)有和任何嘗試過(guò)并討厭它的人交談。 我已經(jīng)與許多猶豫不決的人進(jìn)行了交談-大約在2016年中,我就是其中之一。 但是,我聽(tīng)到的同行對(duì)Typescript的最嚴(yán)厲批評(píng)是,這是一種額外的學(xué)習(xí)工具。 不僅是語(yǔ)言,而且還有構(gòu)建過(guò)程。 但是,大多數(shù)現(xiàn)代的Web應(yīng)用程序在其構(gòu)建鏈中至少有一個(gè)鏈接以Babel的形式保留給JavaScript,Babel是一種允許較新的JavaScript在較舊的瀏覽器上運(yùn)行的工具。 將TypeScript添加到該管道中不應(yīng)該是火箭科學(xué),尤其是因?yàn)锽abel自v7起就支持Typescript編譯。
它不應(yīng)該是火箭科學(xué),但有時(shí)會(huì)有這種感覺(jué),這就是Typescript新手有時(shí)會(huì)掙扎并回到瀏覽器中運(yùn)行的JavaScript受歡迎的原因之一。
好處
但是正如我所說(shuō),我從未聽(tīng)過(guò)有人采用Typescript并為此感到后悔。 好處遠(yuǎn)勝于困難,尤其是在使用Angular CLI或Create React App的時(shí)代-兩者都使您可以在幾分鐘之內(nèi)開(kāi)始使用啟用了Typescript的新項(xiàng)目。
我假設(shè)您知道這些好處是什么,但是如果您不知道,請(qǐng)?jiān)试S我總結(jié)一下:
- Typescript的編譯步驟意味著您可以及早發(fā)現(xiàn)問(wèn)題,而不必等待運(yùn)行時(shí)失敗。
- 您的IDE現(xiàn)在可以在編譯步驟更早的時(shí)候提示您。 想象一下,當(dāng)您引用一個(gè)不存在的變量或使用錯(cuò)誤的參數(shù)調(diào)用函數(shù)時(shí),您的IDE會(huì)告訴您! 真正的革命! (當(dāng)然,因?yàn)?真正的"編程語(yǔ)言已經(jīng)享受了多年,所以我一直在調(diào)侃。)編輯:我對(duì)此強(qiáng)調(diào)不夠。 我最近將一個(gè)舊項(xiàng)目從JavaScript轉(zhuǎn)換為Typescript,以了解我從別人那里繼承來(lái)的代碼庫(kù)的復(fù)雜性。 這是一個(gè)循序漸進(jìn)的過(guò)程,在此期間,團(tuán)隊(duì)繼續(xù)提供新功能,但是我們遇到了一些示例代碼,這些示例中我們錯(cuò)誤地使用了第三方庫(kù)。 也許API發(fā)生了更改,或者有人誤讀了文檔,但是我們傳遞了某些配置變量,這些變量絕對(duì)沒(méi)有任何作用。 Typescript立即告訴我們,我們刪除了有問(wèn)題的代碼。 顯然,它是不需要的,并且非常容易誤導(dǎo)。
- 當(dāng)ECMAScript(驅(qū)動(dòng)JavaScript的標(biāo)準(zhǔn))中提出新功能時(shí),TypeScript可以盡早采用它們,從而使您始終處于最前沿。
但實(shí)際上,主要好處是Typescript使您的代碼能夠以JavaScript無(wú)法做到的方式進(jìn)行自我描述。 當(dāng)我是項(xiàng)目的唯一開(kāi)發(fā)人員時(shí),JavaScript并不是很糟糕,因?yàn)槲铱梢詫⑺惺虑槎祭斡浽谛模⑶椅覔碛型昝赖挠洃?,?duì)嗎? 錯(cuò)誤。 即使是唯一的開(kāi)發(fā)人員,我編寫(xiě)的代碼也容易失憶。 如今,當(dāng)我編寫(xiě)普通的JavaScript時(shí),我討厭不得不去閱讀函數(shù)定義以弄清楚如何使用它。 我不知道它返回什么(如果有的話)或它接受什么樣的參數(shù)。 我可能知道參數(shù)的數(shù)量及其名稱,但這并不總是足夠的:
- function doTheThing() { let error = false; // About a million lines of code that might cause an error return error;}function consumeTheThing() { let error = doTheThing(); if (error) { // What do I do with the error now? }}
這就是我的意思。 "錯(cuò)誤"是布爾值嗎? 當(dāng)我看到第2行時(shí),它看起來(lái)肯定是這樣,但是那到" doTheThing"末尾之間的一百萬(wàn)行代碼又如何呢? 它可以是字符串,對(duì)象或知道什么的人。
您可能會(huì)說(shuō)這種靈活性是一種資產(chǎn)。 可能是這樣,但更常見(jiàn)的是它是一個(gè)陷阱,誘使您采用簡(jiǎn)單的方式,這會(huì)在您和您的同伴之間引起許多微小的挫敗感。 曾經(jīng)在別人的代碼中間,覺(jué)得自己在迷宮中嗎? 那就是別人的代碼。 您可以用JavaScript編寫(xiě)"好的"代碼,但是很少有人鼓勵(lì)您這樣做。
這就是TypeScript的美。 這并不會(huì)迫使您成為一名優(yōu)秀的開(kāi)發(fā)人員。 但這為您提供了實(shí)現(xiàn)此目標(biāo)的工具。
缺點(diǎn)
有缺點(diǎn)嗎? 當(dāng)然有。
- 從字義上來(lái)說(shuō),更多的打字。 您可以更快地穿破鍵盤(對(duì)于使用蝶形鍵盤的人來(lái)說(shuō),這可能是個(gè)問(wèn)題)。 沒(méi)什么大不了的,但是一些JavaScript開(kāi)發(fā)人員討厭必須用每個(gè)新函數(shù)或變量寫(xiě)出類型。 您不必這樣做,但是如果您不使用類型,為什么要使用Typescript?
- 由于您必須編譯代碼,因此每次更新和每次測(cè)試運(yùn)行都將花費(fèi)一點(diǎn)時(shí)間。 但是,我們正在談?wù)搸酌腌姟?我使用Typescript節(jié)省的時(shí)間遠(yuǎn)遠(yuǎn)超過(guò)了編譯它所花費(fèi)的時(shí)間
- 有時(shí),構(gòu)建項(xiàng)目的復(fù)雜性可能是一個(gè)真正的痛苦。 這是真實(shí)的-如果您不熟悉構(gòu)建工具,則設(shè)置新項(xiàng)目可能會(huì)令人沮喪。 在短期內(nèi),我的建議是找到一個(gè)入門項(xiàng)目以助您一臂之力—如果您正考慮使用那些框架,那么上述Angular CLI和Create React App在這方面非常有用。 長(zhǎng)期? 花時(shí)間學(xué)習(xí)工具-tsc,Babel,WebPack和所有這些好東西。 如果您使用的是節(jié)點(diǎn),請(qǐng)嘗試ts-node。 如果您使用的是Mocha,請(qǐng)嘗試ts-mocha。 有一些簡(jiǎn)單的捷徑可以幫助您入門。
有點(diǎn)像是我的觀點(diǎn)是單方面的-我并沒(méi)有在缺點(diǎn)和優(yōu)點(diǎn)上投入太多精力 我想,出于同樣的原因,我不會(huì)花很多時(shí)間在每頓飯上都吃麥當(dāng)勞的好處-這樣做的好處有限(不必再做飯了……我想就是這樣)。
未來(lái)
我認(rèn)為Typescript不會(huì)在短期內(nèi)取代JavaScript-了解后者對(duì)于使前者發(fā)揮作用至關(guān)重要。 而且我們不會(huì)看到Typescript在任何瀏覽器中本機(jī)運(yùn)行。 它是一個(gè)預(yù)處理器,就像之前的CoffeeScript一樣。 Typescript和Coffescript之間的區(qū)別在于后者是對(duì)其所基于語(yǔ)言的根本改變。 Typescript是自然的演變。 這不僅使學(xué)習(xí)變得更容易,而且使將JavaScript項(xiàng)目轉(zhuǎn)換為Typescript的過(guò)程更加繁瑣。 首先將* .js重命名為* .ts。 現(xiàn)在,您有了Typescript項(xiàng)目! 然后,您可以一次開(kāi)始采用語(yǔ)言功能。 我不能保證這會(huì)很容易,但是它將告訴您有關(guān)JavaScript從未有過(guò)的事情。 當(dāng)您開(kāi)始下一個(gè)項(xiàng)目時(shí),Typescript編譯器將等待
這就是為什么我永不回頭。
名稱欄目:Typescript,我永遠(yuǎn)不會(huì)回到JavaScript了
本文URL:http://www.dlmjj.cn/article/djosgge.html


咨詢
建站咨詢
