Как использовать в проекте, который настроен с использованием Vue CLI@3 и TypeScript?
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" неявно имеет тип "любой".
за
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
типа тоже.
0 ответов
Вы были на правильном пути, измените vue-apollo.js
к .ts
А затем добавьте vue-cli-plugin-apollo к типам в tsconfig.