国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

反駁來了!放棄TypeScript?說明你無知!

來源: 責編: 時間:2023-09-18 21:42:25 413觀看
導讀作者 | Robert Vitonsky編譯 | 云中幾天前,漢森 (David Heinemeier Hansson)宣布 Turbo8 即將放棄 TypeScript。我心想:放棄就放棄吧,反正我也不知道 Turbo 8 是什么鬼。然而,在過去的幾年里,一些前端程序員試圖向我推銷“

作者 | Robert Vitonsky8pj28資訊網——每日最新資訊28at.com

編譯 | 云中8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

幾天前,漢森 (David Heinemeier Hansson)宣布 Turbo8 即將放棄 TypeScript。我心想:放棄就放棄吧,反正我也不知道 Turbo 8 是什么鬼。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

然而,在過去的幾年里,一些前端程序員試圖向我推銷“ TypeScript 沒用,只測著玩玩”的想法。我認為,有這種觀點的人要么不關心代碼質量,要么根本不知道 TypeScript 是什么。在這里,我將解釋為什么應該使用 TypeScript。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

注:本文作者 Vitonsky 是一名超過10年的有著復雜項目的前端大牛,參與了許多開源項目的開發:比如翻譯網站的瀏覽器插件 Linguist、模塊 UI 工具ElegantUI、翻譯 DOM 節點的 DomTranslator 庫等等。8pj28資訊網——每日最新資訊28at.com

1、代碼質量控制的“好手”

8pj28資訊網——每日最新資訊28at.com

代碼質量控制是一個保持代碼可維護性的復雜過程。你不能僅僅用 100% 的測試覆蓋代碼,或者審查每個拉取請求并確保你的代碼是可維護的,還應該讓除你之外的其他人也可以識別并搞定它。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

根本無法保證自己的代碼沒有 bug 的同時具有完美的可維護性。你只能在存儲庫中增加防御結構,以使其難以推送帶有錯誤的“炸彈”代碼。阻止“炸彈”代碼的障礙越多,代碼質量就越好。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

這意味著你應該一起使用所有方法來保護存儲庫中的代碼:單元/e2e/集成測試、代碼審查、代碼分析工具以及維護清晰的文檔等。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

TypeScript 是一個強大的代碼分析工具;它可以檢測代碼中的許多缺陷。TypeScript 編譯器迫使程序員確保代碼在類型級別上是正確的。David 和許多其他人低估了靜態類型的價值。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

讓我們看看 TypeScript 為代碼質量帶來了哪些好處。8pj28資訊網——每日最新資訊28at.com

2、contract 對代碼的重要性

8pj28資訊網——每日最新資訊28at.com

靜態類型允許在代碼中定義 contract。 8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

type Participant = { id: string; name: string;};function sayHi(participant: Participant) { //... console.log(`Hi ${participant.name}`);}

8pj28資訊網——每日最新資訊28at.com

該 sayHi 函數需要一個具有精確屬性和精確類型的對象,并且它不關心該函數的用戶將做什么來滿足要求。編譯器確保類型正確。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

用戶可能會提供一個不符合要求的對象并將類型強制轉換為 any,但這不是函數 sayHi 的問題。這是一種責任委托,是開發人員必須理解的一個重要概念,才能正確使用 TypeScript 并獲得其好處。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

程序員必須驗證任何不受信任的數據,例如用戶輸入和其他 IO 數據,或與 JavaScript 互操作的結果。驗證和設置類型后,他們可以將數據傳遞給 TypeScript 代碼,并相信合同將得到遵守,因為 TypeScript 編譯器已經檢查了代碼。如果程序員強制轉換類型,他們必須確保代碼在運行時正確。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

如果你將項目中的非相交類型轉換為任何非 unknown 的類型(沒有運行時驗證),那么代碼質量可能存在問題。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

contract 可以避免為每個函數編寫驗證以確保數據正確。這對于性能和代碼整潔度來說都很好,代碼變得愚蠢而簡單。8pj28資訊網——每日最新資訊28at.com

3、使用JS造成的不好經驗和成本

8pj28資訊網——每日最新資訊28at.com

有時我會用純 JavaScript 編寫代碼,主要是在瀏覽器控制臺中,以便在網頁上進行快速計算或數據解析。幾個月前,我為 Node.js 編寫了一個使用 ChatGPT 翻譯區域設置文件的腳本。這些文件包含長文本,而 ChatGPT 有限制,因此需要一些時間對文本進行切片、翻譯、在ChatGPT的結果中查找錯誤、根據需要重新翻譯,然后將切片重新連接在一起。根據區域設置文件的大小,此過程大約需要 3-5 分鐘。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

在這個過程中,由于一些瑣碎的類型錯誤,我浪費了一些時間,比如忘記使用 wait,這導致一個變量包含 Promise,并將“[object Promise]”寫入文件而不是翻譯文本,或者將錯誤的對象作為函數參數提供。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

TypeScript 消除了這樣的錯誤。8pj28資訊網——每日最新資訊28at.com

4、 TS更面向未來

8pj28資訊網——每日最新資訊28at.com

TypeScript 為你的代碼提供了其他工具分析的潛力,因為它添加了上下文。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

使用 IDE,你可以重命名接口中的屬性,并且實現該接口的所有實體將自動在各自的位置更新屬性的名稱。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

ChatGPT 和 Copilot 等 AI 工具受益于 TypeScript 提供的附加元信息,有可能改進代碼分析和代碼生成。這些分析工具可以更好地識別潛在風險的代碼。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

靜態類型和測試相得益彰。前端代碼是高度異步的,這使得覆蓋所有可能的測試用例并考慮所有潛在的代碼狀態,變得非常有挑戰性。TypeScript 迫使程序員處理一個狀態可能具有的所有可能情況,從而增強代碼可靠性。8pj28資訊網——每日最新資訊28at.com

5、類型:復雜性與質量的取舍

8pj28資訊網——每日最新資訊28at.com

漢森還說道說:8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

“TypeScript 對我來說只是阻礙。不僅因為它需要顯式的編譯步驟,還因為它用‘類型體操’污染了代碼,這給我的開發體驗增添了很少的樂趣,而且常常帶來相當大的悲傷。應該容易的事情變得困難,而困難的事情變成了‘any’。所以不用了,謝謝!”8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

確實,有時必須編寫重要的類型,才能讓編譯器相信你的數據是正確的。但事實就是這樣:創建高質量的可維護代碼通常需要付出艱苦的努力。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

6、結論:會用的人不會抱怨工具

8pj28資訊網——每日最新資訊28at.com

TypeScript 只是一個工具,如果你簡單地啟用它,它不會自動提高代碼質量。你的項目必須制定正確使用該工具的規則,以及執行這些規則的架構師。規則越嚴格越好。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

當在項目中禁用靜態類型時,你將失去許多控制代碼質量的功能。8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

JS 文檔和 .d.ts 類型聲明文件無法替代代碼的靜態類型。它們只是聲明實體外部 API 的方法,但不允許分析實體內的代碼(函數、類和其他代碼塊)。 8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

原文鏈接:https://vitonsky/blog/2023/09/08/typescript-and-code-quality/8pj28資訊網——每日最新資訊28at.com

8pj28資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-10491-0.html反駁來了!放棄TypeScript?說明你無知!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 得物SRE視角下的藍綠發布

下一篇: Nginx map 實現時間格式轉換

標簽:
  • 熱門焦點
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 多線程開發帶來的問題與解決方法

    使用多線程主要會帶來以下幾個問題:(一)線程安全問題  線程安全問題指的是在某一線程從開始訪問到結束訪問某一數據期間,該數據被其他的線程所修改,那么對于當前線程而言,該線程
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 三分鐘白話RocketMQ系列—— 如何發送消息

    我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。注意,如果白話中不小心提到相關代
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 造車兩年股價跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個交易日起持有小米集團的股票,那么截至2023年上半年最后一個交易日,投資者將浮虧59.16%,同區間的恒生科技指數跌幅為52.78%
  • 三星Galaxy Z Fold5今日亮相:厚度縮減但仍略顯厚重

    據官方此前宣布,三星將于7月26日也就是今天在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
99re热这里只有精品视频| 色丁香久综合在线久综合在线观看| 国产乱子伦视频一区二区三区| 亚洲va欧美va天堂v国产综合| 一区二区三区精品| 亚洲精品成a人| 亚洲午夜影视影院在线观看| 一区二区三区中文字幕在线观看| 亚洲乱码中文字幕| 亚洲在线视频免费观看| 夜夜夜精品看看| 午夜精品久久久久久久久久| 婷婷激情综合网| 蜜臀久久久久久久| 国产一区二区三区电影在线观看| 国产成人在线视频免费播放| 成人精品一区二区三区四区| 99久久精品免费精品国产| 欧美国产先锋| 正在播放亚洲| 日韩午夜激情免费电影| 欧美videos大乳护士334| 久久久久久久一区| 亚洲色大成网站www久久九九| 一区二区三区欧美日| 日韩国产在线观看| 国产精品亚洲а∨天堂免在线| av电影一区二区| 欧美日韩一区二区高清| 亚洲永久在线| 欧美精品v日韩精品v韩国精品v| xnxx国产精品| 一区二区视频在线| 国产一区二区三区黄视频 | 黄色资源网久久资源365| 成人激情黄色小说| 在线视频欧美一区| 欧美日韩在线播放| 欧美国产精品专区| 丝袜美腿一区二区三区| 99久久婷婷国产| 一区二区三区四区国产| 欧美日韩一区二区三区视频| 国产日韩欧美精品在线| 午夜免费欧美电影| 成人黄色网址在线观看| 亚洲一区二区高清视频| 精品乱码亚洲一区二区不卡| 一区二区免费在线播放| 国产精品夜夜爽| 国产一区二区三区久久| 日韩无一区二区| 亚洲福利电影网| 成人三级伦理片| 亚洲欧美日韩国产| 日韩精品在线看片z| 一区二区三区免费观看| 99在线精品免费| 欧美午夜在线观看| 亚洲日本在线观看| 成人看片黄a免费看在线| 国产视频一区在线观看一区免费| 日韩视频在线永久播放| 视频一区二区中文字幕| 欧美日韩国产欧| 日韩欧美一级在线播放| 夜夜精品浪潮av一区二区三区| 成人一区在线看| 色成人在线视频| 樱桃视频在线观看一区| 欧美不卡在线| 日韩精品专区在线| 久久国产视频网| 久久一区激情| 亚洲人成小说网站色在线| 99久久777色| 91麻豆精品国产自产在线| 一二三四区精品视频| 狠狠干成人综合网| 国产婷婷色一区二区三区四区| 一区在线视频| 日韩欧美色电影| 久久精工是国产品牌吗| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 三级不卡在线观看| 国产亚洲激情| 亚洲人成精品久久久久久| 91在线视频播放地址| 91精品午夜视频| 久久激五月天综合精品| 欧美午夜精品电影| 另类综合日韩欧美亚洲| 色av综合在线| 日本不卡中文字幕| 久久久噜噜噜久久狠狠50岁| 亚洲一区二区三区四区中文字幕| 好吊视频一区二区三区四区 | 三级一区在线视频先锋| 亚洲永久网站| 性感美女久久精品| 久久精品电影| 美女脱光内衣内裤视频久久影院| 色综合久久九月婷婷色综合| 日本三级亚洲精品| 欧美亚洲一区二区三区四区| 国内成人免费视频| 日韩午夜激情视频| 97精品久久久午夜一区二区三区| 日韩视频一区二区在线观看| 成人av在线观| 中文字幕成人网| 亚洲精选在线| 丝袜美腿亚洲综合| 欧美日韩精品专区| 顶级嫩模精品视频在线看| 精品成人佐山爱一区二区| 91丨九色丨黑人外教| 中文字幕一区日韩精品欧美| 日韩一区二区久久| 日韩成人午夜精品| 欧美一区二区久久久| 91色九色蝌蚪| 亚洲亚洲人成综合网络| 欧美性感一类影片在线播放| 国产一区二区福利视频| 精品国产伦理网| 在线成人亚洲| 美国毛片一区二区三区| 日韩视频免费观看高清完整版 | 免费在线一区观看| 精品人在线二区三区| 国产精品国产一区二区| 亚洲国产成人91porn| 91精品国产入口在线| 欧美激情1区2区3区| 亚洲一二三四在线观看| 夜夜嗨av一区二区三区| av成人天堂| 国产综合成人久久大片91| 国产午夜精品在线观看| 亚洲一区二区三区在线观看视频| 美女性感视频久久| 欧美激情一区在线| 91福利在线导航| 欧美一区二区三区在线播放| 无码av中文一区二区三区桃花岛| 欧美一区永久视频免费观看| 激情久久久久久| 国产一区二区三区免费播放| 久久久无码精品亚洲日韩按摩| 国产精品区二区三区日本| 国产成人亚洲综合a∨婷婷| 亚洲精品少妇30p| 精品久久一二三区| 色婷婷国产精品久久包臀| 97久久超碰精品国产| 青青草原综合久久大伊人精品 | 欧美视频一区在线观看| 欧美精品自拍| 精品午夜久久福利影院| 亚洲视频一二区| 日韩欧美在线观看一区二区三区| 夜夜嗨一区二区| 99国产欧美久久久精品| 九九九精品视频| 一区二区三区四区蜜桃 | 夜夜嗨av一区二区三区四季av| 精品美女在线观看| 在线精品观看国产| 日韩午夜在线电影| 成人av电影在线播放| 麻豆91免费看| 亚洲香蕉伊在人在线观| 国产精品免费人成网站| 91精品国产高清一区二区三区| 另类亚洲自拍| 在线观看成人av| 欧美激情综合| 成人激情开心网| 福利视频网站一区二区三区| 美女免费视频一区| 日日摸夜夜添夜夜添精品视频| 亚洲视频1区2区| 成人免费在线播放视频| 久久综合九色综合久久久精品综合 | 日本不卡免费在线视频| 一级中文字幕一区二区| 亚洲欧美另类小说视频| 国产亚洲一区二区三区在线观看 | xfplay精品久久| 日韩视频一区二区在线观看| 欧美高清hd18日本| 欧美日韩精品一区二区三区蜜桃| 乱码第一页成人| 久久国产日韩欧美| 免费看亚洲片| 久久av一区| 色婷婷av久久久久久久| 色综合久久天天综合网| 久久一区亚洲|