日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

請停止使用 TypeScript 接口

來源: 責編: 時間:2024-05-11 09:18:40 172觀看
導讀為什么應該使用類型而不是接口這張圖片是由人工智能生成的。類型和接口 是每個 TypeScript 程序中使用的重要特性。然而,由于類型和接口在功能上非常相似,這就引出了一個問題:哪個更好?今天,我們將評估類型和接口,然后得出

為什么應該使用類型而不是接口

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

這張圖片是由人工智能生成的。x1k28資訊網——每日最新資訊28at.com

類型和接口 是每個 TypeScript 程序中使用的重要特性。x1k28資訊網——每日最新資訊28at.com

然而,由于類型和接口在功能上非常相似,這就引出了一個問題:哪個更好?x1k28資訊網——每日最新資訊28at.com

今天,我們將評估類型和接口,然后得出結論,說明為什么你在大多數情況下應該使用類型而不是接口。x1k28資訊網——每日最新資訊28at.com

所以,不多說了……讓我們馬上開始吧。x1k28資訊網——每日最新資訊28at.com

那么它們有什么區別呢?

讓我們分析一下這個 Person 類型 和 接口 的定義:x1k28資訊網——每日最新資訊28at.com

type Person = {  name: string  age: number}interface Person {  name: string  age: number}

很明顯,類型和接口有相似的語法,關鍵區別在于類型使用 = 來定義對象的形狀,而不是接口。x1k28資訊網——每日最新資訊28at.com

然而,事情遠不止于此。x1k28資訊網——每日最新資訊28at.com

讓我們深入挖掘一下,一起探索和評估類型和接口。x1k28資訊網——每日最新資訊28at.com

可擴展性

就可擴展性而言,許多人認為接口是顯而易見的贏家,因為接口可以使用 extends 擴展其他接口。x1k28資訊網——每日最新資訊28at.com

// 可擴展性示例interface Job {  job: string}interface Person extends Job {  name: string  age: number}// 使用了 Person 和 Job 的屬性。const person: Person = {  name: "John",  age: 25,  job: "全棧 Web 開發者",}

在這里,Person 接口擴展了 Job,因此 Job 接口的屬性合并到了 Person 中。x1k28資訊網——每日最新資訊28at.com

另一方面,類型也通過利用 聯合 | 或 交集 & 運算符來合并現有類型,提供了可擴展性。x1k28資訊網——每日最新資訊28at.com

接口無法直接表達這種行為。x1k28資訊網——每日最新資訊28at.com

// ? 正常工作type Person = {  name: string  age: number} & { job: string }// ? 不工作interface Person {  name: string  age: number} & { job: string }

實現

在 TypeScript 中,接口與面向對象編程(OOP)兼容,就像其他語言(例如 Java 或 C#)一樣。x1k28資訊網——每日最新資訊28at.com

這意味著接口可以在類中使用 implements 實現。x1k28資訊網——每日最新資訊28at.com

現在讓我們將 Person 定義為一個類,并實現一個名為 Work 的新接口,滿足它們之間的約定。x1k28資訊網——每日最新資訊28at.com

// 實現示例interface Work {  doWork: () => void}class Person implements Work {  name: string  age: number  constructor(name: string, age: number) {    this.name = name    this.age = age  }  // 實現 doWork 方法以滿足 `Work` 接口。  doWork() {    console.log("工作中...")  }}const person = new Person("John", 25)person.doWork()

因此,如果你經常使用 OOP,接口將比類型更適用,因為類型不能直接由類實現。x1k28資訊網——每日最新資訊28at.com

性能

當談論性能時,我們指的是 TypeScript 編譯器執行的 “類型檢查” 性能,隨著代碼庫規模的增加,其性能會呈指數級下降。x1k28資訊網——每日最新資訊28at.com

這就是為什么我們要對類型和接口在類型檢查性能方面進行基準測試,看看哪個更優。x1k28資訊網——每日最新資訊28at.com

這是一個視頻,由 Matt Pocock 解釋了類型和接口之間的區別,以及在類型檢查性能方面實際上 沒有 類型和接口之間的任何差異。x1k28資訊網——每日最新資訊28at.com

接口為什么會有害

在 TypeScript 中,接口具有一個稱為 聲明合并 的獨特特性。x1k28資訊網——每日最新資訊28at.com

聲明合并是指 TypeScript 編譯器將 兩個或多個 具有相同名稱的接口合并為 一個。x1k28資訊網——每日最新資訊28at.com

// 初始的 Person 接口interface Person {  name: string  age: number}// 使用 "聲明合并" 來完善 Person 接口interface Person {  gender: string}// 使用 "合并" 接口來定義一個新的 "person"const person: Person = { name: "John", age: 25, gender: "男性" }

一方面,這個特性允許方便地對現有接口進行細化和擴展,而不會影響其他依賴項。x1k28資訊網——每日最新資訊28at.com

另一方面,聲明合并可能會對你的代碼庫產生有害且令人驚訝的影響,主要有以下 兩個 原因:x1k28資訊網——每日最新資訊28at.com

  • 優先級順序:后面的聲明總是優先于前面的聲明。如果不小心,當在程序的許多部分進行聲明合并時,這可能導致意外問題。
  • 與類的不安全合并:由于 TypeScript 編譯器不檢查屬性的初始化,這可能導致意外的運行時錯誤。

類型沒有這個問題,因此更直接且安全。x1k28資訊網——每日最新資訊28at.com

結論

除非需要特定的接口行為,例如可擴展的細化或使用 OOP 進行實現,否則最好使用類型。x1k28資訊網——每日最新資訊28at.com

類型靈活、直接,并且避免與聲明合并相關的問題。x1k28資訊網——每日最新資訊28at.com

與接口相比,類型在性能上也完全相同,為你提供了另一個選擇類型而不是接口的理由。x1k28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-87968-0.html請停止使用 TypeScript 接口

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

上一篇: Flask中四個好用的裝飾器

下一篇: 用于時間序列概率預測的共形分位數回歸

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機的發布會上,vivo的最新款真無線藍牙耳機vivo TWS Air也一同發布,本次就這款耳機新品給大家帶來一個簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產
  • 2023年,我眼中的字節跳動

    此時此刻(2023年7月),字節跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 慕巖炮轟抖音,百合網今何在?

    來源:價值研究所 作者:Hernanderz“難道就因為自己的一個產品牛逼了,從客服到總裁,都不愿意正視自己產品和運營上的問題,選擇逃避了嗎?”這一番話,出自百合網聯合創
  • 電視息屏休眠仍有網絡上傳 愛奇藝被質疑“薅消費者羊毛”

    記者丨寧曉敏 見習生丨汗青出品丨鰲頭財經(theSankei) 前不久,愛奇藝發布了一份亮眼的一季報,不僅營收和會員營收創造歷史最佳表現,其運營利潤也連續6個月實現增長。自去年年初
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元“人在職場,應該選擇什么樣的著裝?”近日,在網絡上,一個與著裝相關的帖子引發關注,在該帖子里,一位在高級寫字樓亞洲金
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
  • 2021中國國際消費電子博覽會與青島國際軟件融合創新博覽會新聞發布會隆重舉行

    9月18日,2021中國國際消費電子博覽會與青島國際軟件融合創新博覽會新聞發布會在青島國際新聞中心隆重舉行。發布會上青島市政府領導聯袂出席,對本次雙展會情
Top 主站蜘蛛池模板: 五家渠市| 雅安市| 佛学| 民权县| 鄢陵县| 巨野县| 肥乡县| 嘉荫县| 吉隆县| 平武县| 舒城县| 山阳县| 马关县| 东安县| 宁海县| 化州市| 大宁县| 二连浩特市| 金昌市| 贺兰县| 宝清县| 乌拉特中旗| 景泰县| 体育| 阿鲁科尔沁旗| 霸州市| 唐河县| 海南省| 嵊泗县| 舟山市| 卢龙县| 汽车| 兰州市| 新乡县| 阳城县| 安顺市| 海盐县| 延长县| 枣强县| 思南县| 香港|