您好,登錄后才能下訂單哦!
什么是Typescript以及其優缺點是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
JavaScript可能是現代網絡的事實上的語言,但長期以來,它也是我選擇腳本編寫的語言。 使用Python進行編碼很有趣,但是如果我有一些自動化的東西,我會去用node。 我選擇的服務器端語言曾經是C#,但如今它雖然功能強大,但感覺卻很笨拙。 我曾經天真的將Node描述為"泛濫成災",它滿足了我編寫的所有內容的需求。 我甚至可以用多種不同的方式用JavaScript編寫Android和iOS應用程序。
并不是說它是適用于一切的完美工具,但是多年來我一直為我服務。 我一直在諷刺地承認在家庭主力馬網上出現的缺陷,包括加里·伯恩哈特(Gary Bernhardt)嘲諷的" Wat?"。 閃電般的談話讓我仍在思考。 如果您以前從未看過它,請立即停止閱讀并繼續觀看。 您可以稍后感謝我。
閃電般的談話已成為我推薦給前端開發人員的推薦閱讀清單(查看清單還是消耗清單?)的一部分,還有喬納森·克里默的" 23世紀JavaScript架構"。
什么是Typescript?
我假設您聽說過Typescript,但如果沒有,請嘗試總結一下:Typescript是強類型的Javascript。 它添加了您期望強類型語言的功能,并且需要一個編譯步驟(從技術上來說是"翻譯")才能將Typescript轉換為JavaScript。 這是因為瀏覽器不了解Typescript。 從技術上講,Typescript不會添加任何新的運行時功能,而是為開發人員添加功能。
我聽說有人形容Typescript是喜歡它還是討厭它,但是我還沒有和任何嘗試過并討厭它的人交談。 我已經與許多猶豫不決的人進行了交談-大約在2016年中,我就是其中之一。 但是,我聽到的同行對Typescript的最嚴厲批評是,這是一種額外的學習工具。 不僅是語言,而且還有構建過程。 但是,大多數現代的Web應用程序在其構建鏈中至少有一個鏈接以Babel的形式保留給JavaScript,Babel是一種允許較新的JavaScript在較舊的瀏覽器上運行的工具。 將TypeScript添加到該管道中不應該是火箭科學,尤其是因為Babel自v7起就支持Typescript編譯。
它不應該是火箭科學,但有時會有這種感覺,這就是Typescript新手有時會掙扎并回到瀏覽器中運行的JavaScript受歡迎的原因之一。
好處
但是正如我所說,我從未聽過有人采用Typescript并為此感到后悔。 好處遠勝于困難,尤其是在使用Angular CLI或Create React App的時代-兩者都使您可以在幾分鐘之內開始使用啟用了Typescript的新項目。
我假設您知道這些好處是什么,但是如果您不知道,請允許我總結一下:
Typescript的編譯步驟意味著您可以及早發現問題,而不必等待運行時失敗。
您的IDE現在可以在編譯步驟更早的時候提示您。 想象一下,當您引用一個不存在的變量或使用錯誤的參數調用函數時,您的IDE會告訴您! 真正的革命! (當然,因為"真正的"編程語言已經享受了多年,所以我一直在調侃。)編輯:我對此強調不夠。 我最近將一個舊項目從JavaScript轉換為Typescript,以了解我從別人那里繼承來的代碼庫的復雜性。 這是一個循序漸進的過程,在此期間,團隊繼續提供新功能,但是我們遇到了一些示例代碼,這些示例中我們錯誤地使用了第三方庫。 也許API發生了更改,或者有人誤讀了文檔,但是我們傳遞了某些配置變量,這些變量絕對沒有任何作用。 Typescript立即告訴我們,我們刪除了有問題的代碼。 顯然,它是不需要的,并且非常容易誤導。
當ECMAScript(驅動JavaScript的標準)中提出新功能時,TypeScript可以盡早采用它們,從而使您始終處于最前沿。
但實際上,主要好處是Typescript使您的代碼能夠以JavaScript無法做到的方式進行自我描述。 當我是項目的唯一開發人員時,JavaScript并不是很糟糕,因為我可以將所有事情都牢記在心,并且我擁有完美的記憶,對嗎? 錯誤。 即使是唯一的開發人員,我編寫的代碼也容易失憶。 如今,當我編寫普通的JavaScript時,我討厭不得不去閱讀函數定義以弄清楚如何使用它。 我不知道它返回什么(如果有的話)或它接受什么樣的參數。 我可能知道參數的數量及其名稱,但這并不總是足夠的:
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? }}
這就是我的意思。 "錯誤"是布爾值嗎? 當我看到第2行時,它看起來肯定是這樣,但是那到" doTheThing"末尾之間的一百萬行代碼又如何呢? 它可以是字符串,對象或知道什么的人。
您可能會說這種靈活性是一種資產。 可能是這樣,但更常見的是它是一個陷阱,誘使您采用簡單的方式,這會在您和您的同伴之間引起許多微小的挫敗感。 曾經在別人的代碼中間,覺得自己在迷宮中嗎? 那就是別人的代碼。 您可以用JavaScript編寫"好的"代碼,但是很少有人鼓勵您這樣做。
這就是TypeScript的美。 這并不會迫使您成為一名優秀的開發人員。 但這為您提供了實現此目標的工具。
缺點
有缺點嗎? 當然有。
從字義上來說,更多的打字。 您可以更快地穿破鍵盤(對于使用蝶形鍵盤的人來說,這可能是個問題)。 沒什么大不了的,但是一些JavaScript開發人員討厭必須用每個新函數或變量寫出類型。 您不必這樣做,但是如果您不使用類型,為什么要使用Typescript?
由于您必須編譯代碼,因此每次更新和每次測試運行都將花費一點時間。 但是,我們正在談論幾秒鐘。 我使用Typescript節省的時間遠遠超過了編譯它所花費的時間
有時,構建項目的復雜性可能是一個真正的痛苦。 這是真實的-如果您不熟悉構建工具,則設置新項目可能會令人沮喪。 在短期內,我的建議是找到一個入門項目以助您一臂之力—如果您正考慮使用那些框架,那么上述Angular CLI和Create React App在這方面非常有用。 長期? 花時間學習工具-tsc,Babel,WebPack和所有這些好東西。 如果您使用的是節點,請嘗試ts-node。 如果您使用的是Mocha,請嘗試ts-mocha。 有一些簡單的捷徑可以幫助您入門。
有點像是我的觀點是單方面的-我并沒有在缺點和優點上投入太多精力 我想,出于同樣的原因,我不會花很多時間在每頓飯上都吃麥當勞的好處-這樣做的好處有限(不必再做飯了……我想就是這樣)。
未來
我認為Typescript不會在短期內取代JavaScript-了解后者對于使前者發揮作用至關重要。 而且我們不會看到Typescript在任何瀏覽器中本機運行。 它是一個預處理器,就像之前的CoffeeScript一樣。 Typescript和Coffescript之間的區別在于后者是對其所基于語言的根本改變。 Typescript是自然的演變。 這不僅使學習變得更容易,而且使將JavaScript項目轉換為Typescript的過程更加繁瑣。 首先將* .js重命名為* .ts。 現在,您有了Typescript項目! 然后,您可以一次開始采用語言功能。 我不能保證這會很容易,但是它將告訴您有關JavaScript從未有過的事情。 當您開始下一個項目時,Typescript編譯器將等待
看完上述內容,你們掌握什么是Typescript以及其優缺點是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。