簡體   English   中英

比較傳遞給函數的參數類型

[英]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函數的情況下執行以下操作:

  1. 檢查函數fn的結果是否與item中存儲的類型匹配?
  2. 如果我們傳遞一個函數transformResponse ,我們可以檢查它的返回值是否與item類型匹配?
  3. 如果我們傳遞一個函數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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM