▪️型別定義 (interface 和 type)
2023-1-12
| 2025-3-19
字數 498閱讀時間 2 分鐘

interface

interface 是用來定義物件的形態,特別是物件的屬性和函數簽名。
 

繼承

通常使用 extends 關鍵字來繼承其他 interface,例如:
除了繼承其他 interface 中的屬性和函數外,繼承 interface 還會繼承其他 interface 中的泛型定義, 例如

type

type 可以定義所有類型,包括物件、函數、類別、陣列、元組、和別名。
 

繼承

在 TypeScript 中,type 並不能像 interface 一樣繼承其他 type,type 只能繼承單一的 type。
如果你想要像 interface 一樣繼承多個 type 的話,可以使用 Union Types 和 Intersection Types 這兩種類型,來合併多個類型並定義新型別。

Union Types

是多個類型的組合,它允許變數接受多種類型中的一種,如下所示:
 

Intersection Types

是多個類型的交集,它允許變數接受多種類型中的所有類型,如下所示:
 
這兩種類型,都可以解決繼承多個 type 的需求, 但是還是有些不同
Union Types 是指變數可以是多種類型之一
Intersection Types 指的是變數需要同時具有多種類型的屬性。

 

兩者差異

  • 使用 interface 可以定義一個物件具有那些屬性,屬性的型別。而 type 更廣泛,可以指定任何類型。
  • 在繼承上也有差異, 使用 interface 可以繼承多個 interface ,而 type 只能繼承單一的 type
 
我們會用 interface 定義物件型別和函數型別,而 type 則常用於定義型別別名,例如:
  • Javascript
  • 用cmd編譯成執行檔AS 的意義
    Loading...