泛型声明中解构的用途是什么?

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 属性 的对象,并且 属性 的值是一个 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 包装在一个对象中并将其作为类型参数传递。