Apollo Graphql:如何使用打字稿定义结果道具的类型

时间:2019-04-02 20:29:41

标签: reactjs typescript graphql apollo

我希望我的graphql包装器将经过过滤的道具传递给孩子们,在看完示例之后,我似乎找不到找到这种方法的方法。

https://www.apollographql.com/docs/react/recipes/static-typing#props为例,我想做这样的事情:

const withCharacter = graphql<InputProps, Response, Variables, ChildProps>(HERO_QUERY, {
  options: ({ episode }) => ({
    variables: { episode }
  }),
  props: ({ data: { hero }  }) => {
    return ({ ...hero }) . // <- TS2322
  }
});

但这是假设数据和情节都必须在最终道具中,这似乎很有限。

我得到:

Error:(45, 3) TS2322: Type '({ data: { hero } }: OptionProps<InputProps, Response, Variables>) => { name: string; id: string; appearsIn: string[]; friends: Hero[]; }' is not assignable to type '(props: OptionProps<InputProps, Response, Variables>, lastProps?: void | ChildDataProps<InputProps, Response, Variables>) => ChildDataProps<InputProps, Response, Variables>'.
  Type '{ name: string; id: string; appearsIn: string[]; friends: Hero[]; }' is not assignable to type 'ChildDataProps<InputProps, Response, Variables>'.
    Property 'episode' is missing in type '{ name: string; id: string; appearsIn: string[]; friends: Hero[]; }' but required in type 'InputProps'.

我想念什么吗?似乎没有办法指定传递的道具的形状。

到目前为止,我发现的唯一解决方法是在data中返回props以及我感兴趣的过滤版本。

0 个答案:

没有答案