首頁
學習紀錄
遊戲心得影視Life書單案件檔案
Side Projects委託作品與二創互動實驗場
Kurau
百百 BLOG
首頁
學習紀錄
遊戲心得影視Life書單案件檔案
Side Projects委託作品與二創互動實驗場
Kurau

Kurau Blog

「隨心而寫,真真假假,都是我」

一個記錄生活、輸出興趣的個人空間。
遊戲、影視、閱讀、學習……每一段體驗都值得留下文字。

頁面導覽

  • 學習紀錄
  • 遊戲心得
  • 影視Life
  • 書單
  • 委託作品與二創
  • Kurau
  • 合作邀請

找到我

歡迎來 Discord 找我聊天!

“曾經發生的事不可能忘記,只是暫時想不起來而已。”-《神隱少女》

© 2026 Kurau All rights reserved

面試考題

Type 和 Interface的差別

By Kurau·Updated 2026-05-09·3 分鐘閱讀

在 TypeScript 中,Type 和 Interface 都可以用來描述類型。Type 是一種可以命名的類型,而 Interface 是一種描述對象結構的方式。

Type 可以聲明任何類型,例如基本類型、聯合類型、元組、函數類型等。Type 也可以組合其他類型,創建複雜的自定義類型。

Interface 則主要用於描述對象的形狀,可以描述對象的屬性、方法、可選屬性等。Interface 可以繼承其他 Interface,方便模塊化的定義。

總體而言,Type 更適合用於命名複雜的類型或聯合類型,Interface 則更適合用於描述對象的結構。不過在實際使用中,兩者有些功能是可以互換的,選擇哪種方式取決於個人和項目的需求。

深入理解 TypeScript 的 type 以及 type 与 interface 和 class 的区别_typescript_Lee Chen_InfoQ写作社区

詳細比較表

功能typeinterface
描述物件形狀✅✅
聯合型別 (Union)✅ type A = B | C❌
交叉型別 (Intersection)✅ type A = B & C✅ extends
元組 (Tuple)✅❌
擴展 (Extend)& 交叉extends 繼承
宣告合併 (Declaration Merging)❌✅
映射型別 (Mapped Types)✅❌
基本型別別名✅ type ID = string❌

程式碼範例

// Type: 聯合型別
type Status = 'active' | 'inactive' | 'pending';
type ID = string | number;

// Interface: 宣告合併(自動合併同名 interface)
interface User { name: string; }
interface User { age: number; }
// 等同於 interface User { name: string; age: number; }

// Type: 交叉型別
type Admin = User & { role: string };

// Interface: 繼承
interface Admin2 extends User { role: string; }
TypeScript

選擇建議

  • 定義物件結構 → 用 interface(支援宣告合併,對函式庫更友善)
  • 聯合型別、元組、複雜型別 → 用 type
  • 統一風格 → 團隊選一種為主即可,兩者大部分場景可互換

目錄

    ◆ 相關文章

    • TypeScript 特性 - Interface

      2026-06-02
    • TypeScript 宣告

      2026-05-31
    • Async function-Await 函式

      2026-06-02
    • throw Error用法

      2026-06-02
    ← 上一篇tsx 轉 jsx下一篇 →限制特定網頁

    ◆ 關於作者

    Kurau

    個人寫作 / 創作的 SoT,記錄遊戲、影視、學習與生活。

    更多 Kurau 的文章