#typescript #aws-amplify #aws-appsync
#typescript #aws-amplify #aws-appsync
Вопрос:
Я создаю веб-приложение React aws AppSync graphql с помощью amplify. Мне понравился этот фантастический инструмент, но я не смог заставить codegen
работать так, как я ожидал — он не генерирует базовые типы для интерфейса TypeScript.
Допустим, я передаю этот schema.graphql
файл в amplify codegen
:
type Event @model {
id: ID!
name: String
effects: [EventEffects]
}
type EventEffect {
name: String
delta: Int
}
с этим config.yml
:
projects:
myapi:
schemaPath: amplify/backend/api/myapi/build/schema.graphql
includes:
- src/graphql/**/*.ts
excludes:
- ./amplify/**
extensions:
amplify:
codeGenTarget: typescript
generatedFileName: src/API.ts
docsFilePath: src/graphql
extensions:
amplify:
version: 3
Затем codegen выдает мне API.ts
и queries.ts
, mutations.ts
subscriptions.ts
и schema.json
. Проблема в том, что базовые типы не генерируются.
Я могу получить интерфейс для события с помощью:
export interface Event
extends Omit<Exclude<GetEventQuery["getEvent"], null>, "__typename"> {}
Но нет никакого способа получить интерфейс для EventEffect
, так как я не добавлял @modal
директиву.
Чтобы сузить круг моих вопросов:
-
Это специально, что amplify не генерирует базовые типы?
-
Как получить базовый тип для
EventEffect
? -
Для чего используется
schema.json
сгенерированный файл?
Комментарии:
1. У меня та же проблема. Предполагается, что ваш src / models /index.d.ts должен содержать класс с именем Event и другой с именем EventEffect (чтобы следовать вашему примеру). В моем проекте это сработало, все работало нормально. Затем я обновил schema.graphql, за которым последовал принудительный запуск amplify, и все было восстановлено заново, за исключением src / models / files. Я очистил каталог src / models, затем попробовал amplify codegen и amplify codegen types, каталог по-прежнему пуст.
Ответ №1:
Ожидаете ли вы, что сгенерированные классы для Event и EventEffect можно будет использовать с DataStore.save() ? Попробуйте это:
amplify codegen models
Он должен создать / обновить каталог src / models файлом index.d.ts, содержащим 2 класса, которые вы ищете.
Комментарии:
1. Жаль, что официальная страница документации AWS codegen для последней версии CLI недоступна на момент написания этого ответа.