泛型(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開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...