欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Typescript學習之接口interface舉例詳解

 更新時間:2024年03月27日 09:36:44   作者:suoh's?Blog  
TypeScript是JavaScript的一個超集,主要提供了類型系統和對ES6+的支持,TypeScript的核心原則之一是對值所具有的結構進行類型檢查,這篇文章主要給大家介紹了關于Typescript學習之接口interface的相關資料,需要的朋友可以參考下

一、interface的基本含義

TS新增了一個重要概念:接口, 分為對象類型接口和函數類型接口

接口可以約束對象,函數,類的結構和類型,是一種代碼協作必須遵守的契約

Interface 是一種描述對象或函數的東西。你可以把它理解為形狀,一個對象需要有什么樣的屬性,函數需要什么參數或返回什么樣的值,數組應該是什么樣子的,一個類和繼承類需要符合什么樣的描述等等。接下來具體講解對象類型接口、函數類型接口及混合類型接口。

二、對象類型接口

接口中可定義以下屬性:

確定屬性、可選屬性、只讀屬性、任意屬性(可以通過 as 或 [propName: string]: any 來制定可以接受的其他額外屬性)

這里我們舉得例子是在vue3中實現的:

interface Person {
      age: number,// 確定屬性
      name?: string,// 可選屬性(加問號即可)
      [propName: string]: any,// 任意屬性
      readonly sex: string,// 只讀屬性
}
// 使用接口
const p = ref<Person>({
      age: 20,// 確定屬性,不寫會報錯
      sex: '女',// 只讀屬性也是確定屬性,不寫會報錯
      label1: '班花',// 任意屬性1
      label2: '165',// 任意屬性2
})

三、函數類型接口

Interface 還可以用來規(guī)范函數的形狀。Interface 里面需要列出參數列表返回值類型的函數定義。寫法如下:

  • 定義了一個函數接口
  • 接口接收三個參數并且不返回任何值
  • 使用函數表達式來定義這種形狀的函數
// 函數類型接口
interface Func {
      // 定于這個函數接收兩個必選參數都是 number 類型,以及一個可選的字符串參數 desc,
      // 這個函數不返回任何值
      (x: number, y: number, desc?: string): number
}
// 使用
const sum: Func = function (x, y, desc = '') {
      // 等價于const sum: Func = function (x: number, y: number, desc: string): void {
      console.log(desc, x + y)
}
console.log(sum(1, 2))

四、類 interface

Interface 也可以用來定義一個類的形狀。需要注意的是類 Interface 只會檢查實例的屬性,靜態(tài)屬性是需要額外定義一個 Interface;

定義類時,可以使類去實現一個接口

實現接口就是使類滿足接口的要求

// 接口繼承接口:繼承一個新的接口或者類,從父類或者接口繼承所有的屬性和方法
// 不可以重寫屬性,但可以重寫方法 
interface classPerson extends Person1 {
      //在繼承的基礎上新找了個了一個teach方法,且返回值是string類型
      teach(): string;
}
// 類實現接口implements:實現一個新的類,從父類活接口實現所有的屬性和方法,
// 同時可以重寫屬性和方法,包含一些新的功能
class classPerson2 implements Person1 {
      age = 20
      name = 'suosuo'
      sex = '女'
      say() {
            return '我的全名是小鎖'
      }
}

五、混合類型的 Interface

混合類型的接口就是使用同一個 Interface 來描述函數或者對象的屬性或方法。

// 混合類型接口
interface MixType {
      // 如果只有這么一個,那么這個接口是函數接口
      (x: number, y: number): number,
      // 還含有其他方法,那么這個接口就是混合接口
      add(x: number, y: number): number,
      // 還有另一個方法
      log(): void,
      (): void
}
// 調用
function sum() {
      let sum: MixType = (() => { }) as MixType;
      sum.add = (x: number, y: number) => { return x + y }
      sum.log = () => { }
}

const isShowModal = ref(false)
function open() {
      isShowModal.value = true
}

六、總結

  • 接口就是用來定義一個類結構,定義一個類中應該包含哪些屬性和方法,同時接口也可以當成類型聲明去使用
  • 接口中的所有的屬性都不能有實際的值
  • 接口只定義對象的結構,而不考慮實際值
  • 在接口中所有的方法都是抽象方法

到此這篇關于Typescript學習之接口interface的文章就介紹到這了,更多相關Typescript接口interface內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • npm scripts 使用指南詳解

    npm scripts 使用指南詳解

    這篇文章主要介紹了npm scripts 使用指南詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • JSON格式的鍵盤編碼對照表

    JSON格式的鍵盤編碼對照表

    這篇文章主要介紹了JSON格式的鍵盤編碼對照表,本文給出英文鍵名、對應數值和中文注釋,需要的朋友可以參考下
    2015-01-01
  • echarts橫向柱狀圖簡單實現方法

    echarts橫向柱狀圖簡單實現方法

    這篇文章主要給大家介紹了關于echarts橫向柱狀圖簡單實現的相關資料,ECharts是百度前端開發(fā)部開發(fā)的一個開源可視化庫,它可以幫助開發(fā)者輕松的實現各種數據可視化,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • 詳解JS中的柯里化(currying)

    詳解JS中的柯里化(currying)

    這篇文章主要介紹了JS中的柯里化(currying),需要的朋友可以參考下
    2017-08-08
  • 淺談bootstrap使用中的一些問題以及解決過程

    淺談bootstrap使用中的一些問題以及解決過程

    下面小編就為大家?guī)硪黄獪\談bootstrap使用中的一些問題以及解決過程。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 基于JavaScript實現表格滾動分頁

    基于JavaScript實現表格滾動分頁

    這篇文章主要為大家詳細介紹了基于JavaScript實現表格滾動分頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 4個值得收藏的Javascript技巧

    4個值得收藏的Javascript技巧

    這篇文章主要介紹了4個值得收藏的Javascript技巧,文章首先通過變量轉字符串展開主題詳情,需要的小伙伴可以參考一下
    2022-07-07
  • JavaScript實現彈出式可拖動登錄框

    JavaScript實現彈出式可拖動登錄框

    這篇文章主要為大家詳細介紹了JavaScript實現彈出式可拖動登錄框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • javascript字符串拼接的效率問題

    javascript字符串拼接的效率問題

    不是效率的問題 是 內存碎片的問題 用數組速度比“+”要慢 只是內存占的少和內存碎片少一些,現在根本不推薦用數組來處理了。
    2010-12-12
  • 自定義排序算法在JavaScript中的應用

    自定義排序算法在JavaScript中的應用

    這篇文章主要介紹了自定義排序算法在JavaScript中的應用,通過自定義排序函數,我們能夠精確控制數組元素的排序邏輯,從而滿足各種復雜的應用場景,需要的朋友可以參考下
    2024-12-12

最新評論