泛型声明中解构的用途是什么?
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 包装在一个对象中并将其作为类型参数传递。
解构可能是个错误的术语...
在我工作的代码库中发现了这个。这很令人困惑。
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 包装在一个对象中并将其作为类型参数传递。