當前位置:
首頁 > 最新 > TypeScript旅途2:介面

TypeScript旅途2:介面

介面就像協議規範一樣。比如USB協議,而各個廠商可以有不同的實現方式,但是要遵循這個協議,實現出來的USB設備才能在其它遵循USB協議的設備上使用。在這裡不同的廠商就是介面的不同的實現者。

介面定義與可選屬性

  • interface關鍵字用來定義一個介面。

  • 屬性名稱裡面帶?的表示這個屬性是一個可選屬性。

  • showPeople方法接收一個***People ***介面形式的變數。

  • 我們定義了兩個變數peoplepeople2,就像是廠商一樣,這兩個是介面的實現者,但是TypeScript裡面不這麼叫,我們說它們的屬性與介面是兼容的。這也是為什麼調用showPeople方法的時候可以傳入這兩個變數。介面有一個可選屬性,所以people2裡面沒有這個可選屬性phone,但是也能作為方法的參數傳遞進去。至於這兩個變數的屬性定義順序跟介面屬性定義順序沒有關係,你可以隨意調整,TypeScript的類型檢查器只會檢查是否有這個屬性和屬性的類型是否與介面定義的一致。

    只讀屬性

    只讀屬性

關鍵字readonly放到屬性名稱前,表示這個屬性在初始化以後是不可以更改的。

用來定義一個介面或類的屬性是只讀的時候應該用readonly,而定義一個不可變的變數的時候用const。

額外的屬性檢查

[props: string]: any表示我們的介面可以有任意數量的屬性,只要屬性名不會與已經明確定義的屬性名衝突就行,至於是什麼類型我們不關心。

通過類型斷言來解決這個問題是最簡單的方式,相當於我們做了個強制類型轉換,告訴編譯器,它就是期待的類型。

函數類型

為了使用介面表示函數類型,我們需要給介面定義一個函數簽名。它就像是一個只有參數列表和返回值類型的函數定義。參數列表裡的每個參數都需要名字和類型。

可索引的類型

可索引類型具有一個 索引簽名,它描述了對象索引的類型,還有相應的索引返回值類型。這裡定義的索引類型是number,索引返回類型是string

索引類型還可以是string類型。

不積跬步,無以至千里;不積小流,無以成江海。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

對不起,我們分手吧

TAG:全球大搜羅 |