日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TypeScript基础入门 - 泛型 - 泛型类型

發布時間:2025/5/22 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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://github.com/durban89/typescript_demo.git tag: 1.3.3

轉載于:https://my.oschina.net/zhangdapeng89/blog/1935529

總結

以上是生活随笔為你收集整理的TypeScript基础入门 - 泛型 - 泛型类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。