TypeScript學習(五)泛型

2021-10-07 00:03:39 字數 2181 閱讀 4245

泛型,可以支援不固定的型別,具體型別呼叫方法時決定

//傳入什麼型別,返回什麼型別

//對引數校驗

function

get<

t>

(value:t)

:tconsole.

log(

get(123))

//123

通過規定類泛型,增加類的可接收型別,避免宣告多餘的功能類似的類,提公升**復用

class

minclass

<

t>

//獲取最小值

min():

t}return min

}}let m =

newminclass

()//規定t為number

m.add(2

,3,4

,9)console.

log(m.

min())

//2let m2 =

newminclass

()//規定t為string

m2.add

('a'

,'b'

,'c'

,'d'

)console.

log(m2.

min())

//a

//1.

inte***ce

config

var setdata:

config

=function

<

t>

(value1:t)

:t;console.

log(setdata

("小李"))

//小李

//2.

inte***ce

config

<

t>

var setdata:config=

function

(value1)

;console.

log(

setdata(1

))//只能傳入number型別

將類作為引數傳入,進行方法的資料校驗

class

user

}class

mysql

<

t>

}//兩種傳入資料定義

//1.例項化

let u =

newuser

("張三"

,"133"

)//2.手動構造,可知屬性是可多不可少

let u1=

let m =

newmysql

()//指定傳入型別

m.add

(u1)

m.add

(u)

//使用介面規定固有方法

inte***ce

db<

t>

//定義操作類

class

mysql

<

t>

implements

db<

t>`)

return

true

}update

(info:

t, id: number)

:void

更新資料為$`

)}delete

(id: number)

: boolean

的資料`

)return

true

}select

(id: number):t

的資料`

)return

}}class

user

}let u=

let m =

newmysql

()//傳入user類做資料型別校驗

m.add

(u)//增加了資料[object object]

m.delete(20

)//刪除了id為20的資料

m.select(10

)//查詢了id為10的資料

m.update

(u,2

)//id為2更新資料為[object object]

泛型的存在,可以減少類、介面的重複宣告,提高**復用性

TypeScript學習筆記(五) 泛型

本篇將介紹在typescript如何使用泛型。在typescript裡,宣告泛型方法有以下兩種方式 1 function generics func1 arg t t 4 或者5 let generics func2 arg t t function arg 呼叫方式也有兩種 1 generics ...

TypeScript泛型學習

最近在跟著黃軼老師學習vue3.0框架的原始碼,遇到了難啃的點就是typescript的泛型反向推論。所以停下腳步找找資料加強學習typescript的泛型模組。首先簡單建立第乙個使用泛型的例子 test函式,這個函式會返回任何傳入它的值。不用泛型的情況function test arg numbe...

typescript學習(7) 泛型

1 型別引數 實現經典的資料結構binarysearchtree class nodenode表示這個類可以接收單個引數t,這個引數在類中的某個地方會使用到。使用方法 let numbernode new node let stringnode new node numbernode.right n...