td;dr
Как включить vue-apollo в проект, который уже использует TypeScript?
Я создал новый проект vue, используя vue cli @ 3 и используя TS.
Затем я добавил плагин vue-apollo
, который изменил мой файл main.ts для добавления
apolloProvider: createProvider(),
в создании экземпляра vue.
Но компилятор жалуется на это.
Аргумент типа '{router: VueRouter; store: Store <{}>; apolloProvider: {предоставить: () => {}; }; render: (h: CreateElement) => VNode; } 'нельзя назначить параметру типа' ComponentOptions, DefaultMethods, DefaultComputed, PropsDefinition>, Record> '.
Литерал объекта может указывать только известные свойства, и «apolloProvider» не существует в типе «ComponentOptions, DefaultMethods, DefaultComputed, PropsDefinition>, Record>». [2345]
Я вижу, что в пакете vue-apollo есть каталог типов, который я извлек из npm, но не знаю, как их использовать.
Я также получаю следующее
[ts] Не удалось найти файл объявления для модуля '@ / vue-apollo'. '/Users/praveen/code/voicezen/repos/voicezen-ui/src/vue-apollo.js' неявно имеет тип 'any'. [7016]
для следующего импорта в main.ts
import { createProvider } from '@/vue-apollo';
Я получаю, что это может быть из правила noImplicitAny
, но затем изменение сгенерированного vue-apollo.js на vue-apollo.ts также не решает проблемы.
Изменение его на .ts
удаляет ошибки компилятора из main.ts, касающиеся двух выше, но затем я получаю следующее.
Не удалось найти файл объявления для модуля 'vue-cli-plugin-apollo / graphql-client'. '/Users/praveen/code/voicezen/repos/voicezen-ui/node_modules/vue-cli-plugin-apollo/graphql-client/index.js' неявно имеет тип 'any'.
для
import {
createApolloClient,
restartWebsockets
} from 'vue-cli-plugin-apollo/graphql-client';
Чтобы это исправить, я могу добавить объявление модуля в мои наборы, как это, но это правильный путь?
declare module 'vue-cli-plugin-apollo/graphql-client';
Параметр onLogin
или onLogout
метода apolloClient
в сгенерированном vue-apollo.ts
начинает жаловаться на то, что они также являются неявным типом any
.