簡體   English   中英

泛型聲明中解構的用途是什么?

[英]What is the use of destructuring in a generic declaration?

解構可能是錯誤的術語......

在我工作的代碼庫中發現了這個。這很令人費解。

await apolloClient
    .query<{ Workorder: Workorder }>({
      query: WORKORDER_QUERY,
      variables: { uuid: id },
    })

我不明白{ Workorder: Workorder }的意義。 這里發生了什么? 那與.query<Workorder>的價值是多少?

Workorder是一個具有大約 30 個屬性的接口。

它不是破壞性的。 它只是意味着傳遞的類型參數是一個帶有 Workorder 屬性的 object,並且該屬性的值是一個 Workorder。

例如,給定:

type Workorder = { order: boolean };
declare function fn<T>(): T;

const result = fn<Workorder>();

其中類型參數與返回的類型相同, result的類型為:

{
  order: boolean
}

而如果你這樣做

const result = fn<{ Workorder: Workorder }>();

結果現在是這樣的類型:

{
  Workorder: {
    order: boolean
  }
}

並不是說.query做同樣的事情,但這會讓您了解不同之處。 執行<{ Workorder: Workorder }>只是將 Workorder 包裝在 object 中並將其作為類型參數傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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