iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
自我挑戰組

從新手開始TypeScript系列 第 8

Day8-TypeScript(TS)的介面型別(Interface)Part 1

今天要來介紹TypeScript(TS)的介面型別(Interface)

首先了解TS的核心原則之一

  • 型別檢查關注於所具有的形狀
  • 鴨子型別(duck typing)

介面型別擁有以下特性:

扮演命名型別的角色,描述物件的形狀(Shape),補強鴨子型別

鴨子型別
當你看到一隻走起來像鴨子
游起來像鴨子
叫起來也像鴨子
那麼這隻就可以被稱為鴨子

判斷依據:物件若含有特定名稱的屬性,它可能就是某種型別
因此,TS介面可以補強TS得鴨子型別。

不會轉譯成JavaScript

介面不會產生對應的JS程式碼,
它是使用在程式設計階段,
提供工具程式自動完成功能,
而在程式編譯階段提供型別檢查,
因此,介面對於執行階段的JS程式碼是沒有任何影響的

可重複使用

只需傳入函式的物件滿足介面需求即可。

範例如下,

interface MyFunc{
    x:number;
    y:number;
}

let func1=(p:MyFunc)=>{
    console.log(p.x,p.y);
}

func1({x:10});//error  每項參數都必須對應到
func1({x:10,y:20});
func1({x:10,z:20}); //error  未標記z視為錯誤

範例中,
第一項錯誤,
介面參數行內已標記指定y屬性,
但傳入參數時並沒傳入該值,
因此出現錯誤。

第二項錯誤,
介面參數行內標記未指定z屬性,
但傳入參數時卻傳入該值,
所以就會被視為錯誤。

今日結語

今天我們就簡單認識介面型別(Interface)該如何使用,
之後會再帶範例來解釋。
加油加油。


上一篇
Day7-TypeScript(TS)基礎型別資料Part 2
下一篇
Day9-TypeScript(TS)的介面型別(Interface)Part 2
系列文
從新手開始TypeScript30

尚未有邦友留言

立即登入留言