小编Joe*_*chr的帖子

自动生成函数的类型安全包装,然后仅使用`__typename` 作为参数动态调用。打字稿

我拥有由 awesome 完全类型安全的自动生成代码graphql-codgen/vue。我通过构建一个小包装器在我的项目中使用它,因此我的用户不必每次调用都执行常见的配置任务。例如定义缓存行为、自动更新缓存、以正确的类型和格式解构结果。

带有 JS 和 with 的包装器工人,any但我也希望它是类型安全的,并且由于graphql-codegen已经以类型安全的方式生成了所有类型和方法,我认为必须有一种方法可以做到这一点。不知何故,我认为有歧视性的工会......

所以归结为示例代码我的问题是:我有这个自动生成的代码:

//File GQLService.ts
export type CustodiansList = (
  { __typename: 'Query' }
  & { custodiansList?: Maybe<Array<(
    { __typename: 'Custodian' }
    & Pick<Custodian, 'id' | 'name' | 'street' | 'zip' | 'city' | 'telephone' | 'createdAt' | 'updatedAt'>
  )>> }
);

type ReactiveFunctionCustodiansList = () => CustodiansListVariables

/**
 * __useCustodiansList__
 *
 * To run a query within a Vue component, call `useCustodiansList` and pass it any options …
Run Code Online (Sandbox Code Playgroud)

typescript vue.js graphql graphql-codegen

5
推荐指数
1
解决办法
199
查看次数

如何使用 nuxt 和 @vue/composition-api 提供/注入 Vue 根实例?

我正在尝试将@vue/apollo-composable与我的 Nuxt-Ts 应用程序一起使用。这是如何将它注入到“普通”Vue 应用程序的根实例中的示例:

import { provide } from '@vue/composition-api'
import { DefaultApolloClient } from '@vue/apollo-composable'

const app = new Vue({
  setup () {
    provide(DefaultApolloClient, apolloClient)
  },

  render: h => h(App),
})
Run Code Online (Sandbox Code Playgroud)

问题:我不知道如何访问Nuxt-TS 中的根实例。

我尝试制作一个插件,但它直接注入到根实例中(这是不对的,因为@vue/apollo-composable使用composition-api::provide()which 创建了它自己的属性_provided

如果我使用 nuxt 插件,则会inject$get 连接起来。如果我_provided直接写一个对象通过ctx.app._provided =它不会粘住。

import { DefaultApolloClient } from "@vue/apollo-composable";
const myPlugin: Plugin = (context, inject) => {
  const defaultClient = ctx.app.apolloProvider.defaultClient;
  inject(DefaultApolloClient.toString(), defaultClient) …
Run Code Online (Sandbox Code Playgroud)

typescript nuxt.js vue-apollo vuejs3 vue-composition-api

1
推荐指数
1
解决办法
5493
查看次数