TypeScript:ReturnType->如何设置函数返回的函数的返回类型

时间:2020-05-15 05:43:18

标签: typescript graphql

我正在使用graphql代码生成生成GraphQL代码库的类型。生成的核心sdk的示例代码如下:

export function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {
  return {
   myCustomFunction(...): Promise<MyFuncReturn>
 }
}

getSdk返回我为GraphQL Server定义的所有API的对象。

我正在尝试使用ReturnType语法来匹配myCustomFunction的返回值,即代码其他部分中的MyFuncReturn。原因是,我的许多查询/输出响应对象都不完整(我不希望所有查询使用所有字段),因此无法将其类型转换为架构中定义的完整响应对象。

我想利用ReturnType来使代码的其他部分可以利用该函数的returntype,而不用知道要返回的对象/类型,例如:

mytestCode {

    callCoreSdk(): ReturnType<getSdk().myCustomFunc>
}

这是否可能并允许。尝试以上并得到错误。另外,找不到在其中可以在函子内部将ReturnType用作函子的示例。

1 个答案:

答案 0 :(得分:2)

您的语法有些偏离,但是可以做到。要获取{ path: 'Home-properties', loadChildren: '../../../app/Home/Home-details/Home-property/Home-property.module#HomePropertyModule', pathMatch: 'full', }, 的类型,您需要使用getSdk运算符(typeof)。然后可以使用typeof getSdk获得ReturnTypegetSdk)的返回类型。要获取返回类型中的属性类型,可以使用index type queryReturnType<typeof getSdk>

ReturnType<typeof getSdk>['myCustomFunction']

Playground Link