1:omit 型別讓我們可以從另乙個物件型別中剔除某些屬性,並建立乙個新的物件型別:
泛型型別宣告:type omit= pick>;
type user =
;type userwithoutemail = omit"email"
>
;// 等價於:
type userwithoutemail =
;
2:pick 幫助型別是乙個對映型別,它用了 keyof 操作符和乙個索引型別 t[p] 來獲取型別物件型別 t 中的屬性 p 。
type pickkextends
keyof
t>=;
type user =
;type student =
"name"
|"id"
;const other: pick
=
// 原始型別
inte***ce
tstate
// 如果我只想要name和age怎麼辦,最粗暴的就是直接再定義乙個(我之前就是這麼搞得)
inte***ce
tsinglestate
// 這樣的弊端是什麼?就是在tstate發生改變的時候,tsinglestate並不會跟著一起改變,所以應該這麼寫
inte***ce
tsinglestate
extends
pick
"name"
|"age"
>
;const person: tsinglestate =
const a: pick=
3:readonlyarray 用來約束乙個物件的屬性, 在物件剛建立時能賦值, 往後賦值均會報錯, 在類中使用 readonly 只能在建構函式中賦初始值。
inte***ce
readonlyarray
<
t>
TypeScript泛型約束
有了泛型之後,乙個函式或容器類能處理的型別一下子擴到了無限大,似乎有點失控的感覺。所以這裡又產生了乙個約束的概念。我們可以宣告對型別引數進行約束。我們還拿上文中的student栗子來說,想訪問value的length屬性,但是編譯器並不能證明每種型別都有length屬性,所以就報錯了。student...
TypeScript泛型介面
以使用介面的方式來定義乙個函式需要符合的形狀 inte ce searchfunc let mysearch searchfunc source string,substring string 當然也可以使用含有泛型的介面來定義函式的形狀 inte ce createarrayfunc let cr...
TypeScript泛型學習
最近在跟著黃軼老師學習vue3.0框架的原始碼,遇到了難啃的點就是typescript的泛型反向推論。所以停下腳步找找資料加強學習typescript的泛型模組。首先簡單建立第乙個使用泛型的例子 test函式,這個函式會返回任何傳入它的值。不用泛型的情況function test arg numbe...