[英]Comparing types of arguments passed to a function
假設我們有以下抽象來從 API 中檢索數據:
用於存儲數據的類
class DataItem<T> { data?: T | null }
查詢功能
function queryData ( fn: () => Promise<any> item: DataItem<any> transformResponse?: (value: any) => any // value - result from fn )
我們想按如下方式使用它:
const item = new DataItem<ItemDto>()
async function request (): Promise<ItemDto> { ... }
queryData(
() => request()
item
)
是否可以在沒有通用queryData
函數的情況下執行以下操作:
fn
的結果是否與item
中存儲的類型匹配?transformResponse
,我們可以檢查它的返回值是否與item
類型匹配?transformResponse
,我們是否可以檢查它的參數value
是否與函數fn
返回的類型相同?不,泛型類型變量正是允許您執行此操作的工具。 以下內容應滿足您的要求:
function queryData<T>(
fn: () => Promise<T>,
item: DataItem<T>,
transformResponse: (value: Promise<T>) => DataItem<T>
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.