Typescrtipt學習筆記 3 泛型

2021-10-09 12:23:06 字數 1519 閱讀 7409

泛型(generics)是指在定義函式、介面或者類的時候, 不預先指定其型別,而是在使用是手動指定其型別的一種特性

在很多時候,我們不確定函式的引數或返回值,無法指定固定的型別,但是寫入any型別又會喪失型別,例如

可以看到,我們雖然傳入了number型別的引數,但是接受結果卻是any型別,因為我們並未指定型別,但是指定型別,又限制了引數型別,無法滿足需求,此時泛型很好的解決了這個問題,他可以有傳入的引數決定資料的型別,直接看**

function echo <

t>

(params:t)

:tlet res =

echo

(123);

// 我們在函式名後面加了 , 其中的 t 表示任意輸入的型別, 後面的 t 即表示輸出的型別,且與輸入保持一致。

在泛型函式內部使用變數時,由於型別是未知的,所以無法使用其方法,例如:

function echo <

t>

(params:t)

:tlet res =

echo([

1,23]

);// 儘管傳入的是陣列,但是函式預先無法判斷引數型別,所以呼叫length屬性會報錯,這是就可以在泛型後邊加以約束

function echo <

t>

(params:t[

]):t

let res =

echo([

1,23]

);// 這時指定為陣列的泛型,就可以呼叫length屬性

上邊的例子中,指定為陣列泛型,就可以預先呼叫length屬性,但是其他型別也可以訪問length屬性,例如string,又或者物件上具有length屬性,這時候指定固定的陣列泛型又無法滿足需求,此時就可以搭配介面實現

inte***ce

haslengthprop

// 利用extends關鍵字繼承介面約束,這時只要傳入的引數具備lenght屬性,就不會報錯

function echo <

textends

haslengthprop

>

(params:t)

:tconst str =

'hello'

const arr =[1

,2,3

]const obj =

let res =

echo

(str)

;let res1 =

echo

(arr)

let res2 =

echo

(obj)

學習筆記 雜湊學習筆記

hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...

學習筆記 CentOS 學習筆記01

簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...

筆記 spring cloud 學習筆記

1 spring cloud 是什麼 spring cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...