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

當(dāng)前位置:首頁 > 科技  > 軟件

請停止使用 TypeScript 接口

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

為什么應(yīng)該使用類型而不是接口

e0828資訊網(wǎng)——每日最新資訊28at.com

這張圖片是由人工智能生成的。e0828資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

那么它們有什么區(qū)別呢?

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

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

很明顯,類型和接口有相似的語法,關(guān)鍵區(qū)別在于類型使用 = 來定義對象的形狀,而不是接口。e0828資訊網(wǎng)——每日最新資訊28at.com

然而,事情遠不止于此。e0828資訊網(wǎng)——每日最新資訊28at.com

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

可擴展性

就可擴展性而言,許多人認為接口是顯而易見的贏家,因為接口可以使用 extends 擴展其他接口。e0828資訊網(wǎng)——每日最新資訊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 開發(fā)者",}

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

另一方面,類型也通過利用 聯(lián)合 | 或 交集 & 運算符來合并現(xiàn)有類型,提供了可擴展性。e0828資訊網(wǎng)——每日最新資訊28at.com

接口無法直接表達這種行為。e0828資訊網(wǎng)——每日最新資訊28at.com

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

實現(xiàn)

在 TypeScript 中,接口與面向?qū)ο缶幊蹋∣OP)兼容,就像其他語言(例如 Java 或 C#)一樣。e0828資訊網(wǎng)——每日最新資訊28at.com

這意味著接口可以在類中使用 implements 實現(xiàn)。e0828資訊網(wǎng)——每日最新資訊28at.com

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

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

因此,如果你經(jīng)常使用 OOP,接口將比類型更適用,因為類型不能直接由類實現(xiàn)。e0828資訊網(wǎng)——每日最新資訊28at.com

性能

當(dāng)談?wù)撔阅軙r,我們指的是 TypeScript 編譯器執(zhí)行的 “類型檢查” 性能,隨著代碼庫規(guī)模的增加,其性能會呈指數(shù)級下降。e0828資訊網(wǎng)——每日最新資訊28at.com

這就是為什么我們要對類型和接口在類型檢查性能方面進行基準(zhǔn)測試,看看哪個更優(yōu)。e0828資訊網(wǎng)——每日最新資訊28at.com

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

接口為什么會有害

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

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

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

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

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

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

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

結(jié)論

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

類型靈活、直接,并且避免與聲明合并相關(guān)的問題。e0828資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

標(biāo)簽:
  • 熱門焦點
  • 小米降噪藍牙耳機Necklace分享:聽一首歌 讀懂一個故事

    在今天下午的小米Civi 2新品發(fā)布會上,小米還帶來了一款新的降噪藍牙耳機Necklace,我們也在發(fā)布結(jié)束的第一時間給大家?guī)磉@款耳機的簡單分享。現(xiàn)在大家能見到最多的藍牙耳機
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經(jīng)過去,最明顯的肯定就是大內(nèi)存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 6月安卓手機好評榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 2023 年的 Node.js 生態(tài)系統(tǒng)

    隨著技術(shù)的不斷演進和創(chuàng)新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態(tài)系統(tǒng),可以幫助開發(fā)人員更快地實現(xiàn)復(fù)雜的應(yīng)用。本文就來看看 Node.js 最新的生
  • 一文看懂為蘋果Vision Pro開發(fā)應(yīng)用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現(xiàn)實(MR)頭戴設(shè)備。Vision Pro結(jié)合了虛擬現(xiàn)實(VR)和增強現(xiàn)實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 共享單車的故事講到哪了?

    來源丨海克財經(jīng)與共享充電寶相差不多,共享單車已很久沒有被國內(nèi)熱點新聞關(guān)照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發(fā)報道稱,成都、天津、鄭州等地多個共享單
  • 當(dāng)家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當(dāng)家”的盒馬,開始加速謀生了。據(jù)盒馬官微消息,盒馬計劃今年開放生鮮供應(yīng)鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經(jīng)與
  • 上海舉辦人工智能大會活動,建設(shè)人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術(shù)、新產(chǎn)品、新應(yīng)用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發(fā)展盛典人工
  • 中關(guān)村論壇11月25日開幕,15位諾獎級大咖將發(fā)表演講

    11月18日,記者從2022中關(guān)村論壇新聞發(fā)布會上獲悉,中關(guān)村論壇將于11月25至30日在京舉行。本屆中關(guān)村論壇由科學(xué)技術(shù)部、國家發(fā)展改革委、工業(yè)和信息化部、國務(wù)
Top 主站蜘蛛池模板: 沛县| 寿光市| 邻水| 邓州市| 壶关县| 凉城县| 江川县| 得荣县| 天等县| 大足县| 图木舒克市| 孟津县| 财经| 兰考县| 桂阳县| 准格尔旗| 如皋市| 南江县| 尉犁县| 昌平区| 盐城市| 平塘县| 镇宁| 射阳县| 鄂尔多斯市| 元朗区| 乡宁县| 敖汉旗| 石家庄市| 永平县| 象山县| 大余县| 高淳县| 马尔康县| 红桥区| 锡林郭勒盟| 天津市| 甘泉县| 绩溪县| 德化县| 施秉县|