深入理解 TypeScript 介面繼承

一、TS 介面繼承寫法

在 TypeScript 中,介面是一種非常重要的概念,可以用來描述對象的形狀或類的結構。介面繼承是指一個介面可以繼承另一個介面或多個介面的成員。

介面繼承語法如下:

interface ChildInterface extends ParentInterface {
  // 子介面 extends 父介面的成員
  ...
}

舉個例子:

interface Animal {
  age: number;
  eat(): void;
}

interface Person extends Animal {
  name: string;
  sayHi(): void;
}

上述代碼中,Person 介面繼承了 Animal 介面。

二、TS type 繼承

除了介面繼承,TypeScript 中還支持通過 type 關鍵字進行類型的繼承。

type 關鍵字定義的類型別名可以繼承其他類型、聯合類型或交叉類型。

type A = { a: number };
type B = A & { b: number };

上述代碼中,B 類型繼承了 A 類型,是 A 類型與帶有 b 屬性的對象的交叉類型。

三、TS 介面繼承類

在 TypeScript 中,介面還可以繼承類,這個類可以是一個普通類,也可以是一個抽象類。

class Animal {
  age: number;
  eat(): void {}
}

interface Person extends Animal {
  name: string;
  sayHi(): void;
}

上述代碼中,Person 介面繼承了 Animal 類,可以理解為實現了 Animal 類的所有成員。

四、TS 定義介面

在 TypeScript 中,介面的定義可以為對象和函數定義。下面給出對象的定義:

interface Foo {
  propA: number;
  propB: string;
}

上述代碼中,Foo 介面定義了對象的形狀,對象必須包含 propA 屬性和 propB 屬性。

五、TS 介面繼承多個介面

介面之間也可以多重繼承,即一個介面可以同時繼承多個介面,語法如下:

interface ChildInterface extends ParentInterface1, ParentInterface2 {
  // 子介面同時 extends 多個父介面的成員
  ...
}

舉個例子:

interface Person {
  name: string;
  sayHi(): void;
}

interface WorkMan {
  company: string;
  work(): void;
}

interface Employee extends Person, WorkMan {
  dept: string;
  work(): void;
}

上述代碼中,Employee 介面同時繼承了 Person 和 WorkMan 介面,實現了所有繼承介面的成員。

六、TS 類型繼承

TypeScript 還支持類型的繼承,類型繼承可以實現對多個類型的複合。語法如下:

type ChildType = ParentType1 & ParentType2 & ...

舉個例子:

type PersonType = {
  name: string;
  age: number;
}

type InfoType = {
  sex: string;
  address: string;
}

type EmployeeType = PersonType & InfoType;

上述代碼中,EmployeeType 類型繼承了 PersonType 和 InfoType 的成員,是 PersonType 和 InfoType 的交叉類型。

七、介面繼承了 object 類嗎

在 TypeScript 中,如果一個介面不顯式繼承自其它介面,那麼它默認會繼承自 object 類型,object 是 TypeScript 中表示非特定類型的類型,即表示所有對象類型的基礎。

interface Foo {
  propA: number;
  propB: string;
}

const foo: Foo = {}; // TypeScript 報錯:缺少屬性 propA 和 propB。

上述代碼中,Foo 介面沒有繼承其它介面,因此默認繼承自 object 類型。

八、TS 繼承抽象類

除了可以繼承類和介面,TypeScript 還支持繼承抽象類。

抽象類是用來定義標準的類,它不能被實例化,只能用來被子類繼承。抽象類可以包含抽象方法,這些方法只有定義,沒有實現。

abstract class Animal {
  abstract eat(): void;
}

interface Person extends Animal {
  name: string;
}

上述代碼中,Person 介面繼承了 Animal 抽象類,實現了 eat 方法。

九、TS 介面是什麼

TypeScript 中的介面是用來定義對象和函數的規範,介面定義了對象和函數應該擁有的屬性和方法。一個對象或函數如果符合介面的規範,就可以被認為是實現了這個介面。

十、TS 繼承多個介面

在 TypeScript 中,介面允許繼承多個介面,通過這種方式可以實現介面的復用和拓展。當一個介面繼承了多個介面時,它就會包含父介面的所有成員。

舉個例子:

interface Person {
  name: string;
  sayHi(): void;
}

interface WorkMan {
  company: string;
  work(): void;
}

interface Employee extends Person, WorkMan {
  dept: string;
  work(): void;
}

上述代碼中,Employee 介面繼承了 Person 和 WorkMan 介面,實現了所有繼承介面的成員。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/157353.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 19:59
下一篇 2024-11-18 20:00

相關推薦

  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • Python介面自動化測試

    本文將從如下多個方面對Python編寫介面自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 介面自動化測試是軟體測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • Jadoor門鎖開發介面接入指南

    本文將從多個方面詳細介紹如何將門鎖接入Jadoor平台的開發介面,方便開發者們快速實現門鎖遠程控制、開鎖記錄查看等功能。 一、Jadoor門鎖開發介面簡介 Jadoor是一款用於密…

    編程 2025-04-27
  • 後端介面設計開發經驗分享

    在受到前端某些限制或特殊需求時,後端介面的設計和開發顯得尤為重要。下面從以下幾個方面進行講述。 一、命名規範 合理的命名規範可以大大提高介面的可讀性和可維護性。以下是一些命名規範的…

    編程 2025-04-27
  • 期貨數據介面 Python:打通數字資產交易數據的關鍵

    本文將從以下幾個方面討論期貨數據介面 Python: 一、數據介面簡介 期貨數據介面是指為期貨從業人員提供用於獲取歷史、實時及未來交易數據的工具。Python是一種常用的編程語言,…

    編程 2025-04-27
  • 如何快速發布http介面

    想要快速發布http介面,可以從以下幾個方面入手。 一、選擇合適的框架 選擇合適的框架對於快速發布http介面非常重要。目前比較受歡迎的框架有Flask、Django、Tornad…

    編程 2025-04-27
  • Javaweb 介面返回數據的定義與實現

    本文將介紹 javaweb 如何定義介面返回數據,並提供相應的代碼示例。 一、介面返回數據的定義 在 javaweb 開發中,我們經常需要通過介面返回數據。介面返回的數據格式通常是…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • Postman介面自動化

    一、安裝和使用Postman Postman是一個強大的API測試工具,可以使用它來測試各種類型的API請求和響應。在進行介面自動化測試之前,首先需要安裝和使用Postman。以下…

    編程 2025-04-25
  • 深入理解byte轉int

    一、位元組與比特 在討論byte轉int之前,我們需要了解位元組和比特的概念。位元組是計算機存儲單位的一種,通常表示8個比特(bit),即1位元組=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25

發表回復

登錄後才能評論