深入理解 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-hant/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

發表回復

登錄後才能評論