TypeScript基础入门 - 泛型 - 泛型类型
2019獨角獸企業重金招聘Python工程師標準>>>
轉載
TypeScript基礎入門 - 泛型 - 泛型類型
項目實踐倉庫
https://github.com/durban89/typescript_demo.git tag: 1.3.2為了保證后面的學習演示需要安裝下ts-node,這樣后面的每個操作都能直接運行看到輸出的結果。
npm install -D ts-node后面自己在練習的時候可以這樣使用
npx ts-node 腳本路徑泛型
泛型類型
上一篇文章的分享,我們創建了identity通用函數,可以適用于不同的類型。 在這次分享中分享一下函數本身的類型,以及如何創建泛型接口。泛型函數的類型與非泛型函數的類型沒什么不同,只是有一個類型參數在最前面,像函數聲明一樣,如下
function identity<T> (arg: T) : T {return arg; }let otherIdentity: <T> (arg: T) => T = identity;我們也可以使用不同的泛型參數名,只要在數量上和使用方式上能對應上就可以,如下
function identity<T> (arg: T) : T {return arg; }let other1Identity: <U> (arg: U) => U = identity;我們還可以使用帶有調用簽名的對象字面量來定義泛型函數,如下
function identity<T> (arg: T) : T {return arg; }let other2Identity: { <U>(arg: U): U } = identity;這引導我們去寫第一個泛型接口了。 我們把上面例子里的對象字面量拿出來做為一個接口,如下
function identity<T> (arg: T) : T {return arg; }interface GenerateIdentityFunc {<U> (arg: U): U; }let other3Identity: GenerateIdentityFunc = identity;一個相似的例子,我們可能想把泛型參數當作整個接口的一個參數。 這樣我們就能清楚的知道使用的具體是哪個泛型類型(比如:?Dictionary<string>而不只是Dictionary)。 這樣接口里的其它成員也能知道這個參數的類型了。
function identity<T> (arg: T) : T {return arg; }interface GenerateIdentityFunc1<U> {(arg: U): U }let other4Identity: GenerateIdentityFunc1<number> = identity;注意,我們的示例做了少許改動。 不再描述泛型函數,而是把非泛型函數簽名作為泛型類型一部分。 當我們使用 GenerateIdentityFunc1的時候,還得傳入一個類型參數來指定泛型類型(這里是:number),鎖定了之后代碼里使用的類型。 對于描述哪部分類型屬于泛型部分來說,理解何時把參數放在調用簽名里和何時放在接口上是很有幫助的。
除了泛型接口,我們還可以創建泛型類。 注意,無法創建泛型枚舉和泛型命名空間。
本實例結束實踐項目地址
轉載于:https://my.oschina.net/zhangdapeng89/blog/1935529
總結
以上是生活随笔為你收集整理的TypeScript基础入门 - 泛型 - 泛型类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot设置静态资源不拦截的
- 下一篇: 自己手写一个Mybatis框架(简化)