aws amplify codegen: ¿cómo generar tipos base para TypeScript?
Estoy construyendo una aplicación web React + AWS AppSync GraphQL con Amplify. He estado disfrutando de esta herramienta fantástica, pero no pude hacer que el codegen funcionara como esperaba: no genera tipos base para el frontend en TypeScript.
Supongamos que doy este archivo schema.graphql a amplify codegen:
type Event @model {
id: ID!
name: String
effects: [EventEffects]
}
type EventEffect {
name: String
delta: Int
}
con este 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
Entonces codegen me da API.ts y queries.ts, mutations.ts, subscriptions.ts y schema.json. El problema es que no se generan tipos base.
Puedo obtener la interfaz para Evento con:
export interface Event
extends Omit<Exclude<GetEventQuery["getEvent"], null>, "__typename"> {}
Pero no hay manera de obtener la interfaz para EventEffect, ya que no añadí la directiva @modal.
Para concretar mis preguntas:
¿Es por diseño que Amplify no genera tipos base?
¿Cómo obtener el tipo base de
EventEffect?¿Para qué se utiliza el
schema.jsongenerado?
Respuesta #1
¿Esperas clases generadas para Event y EventEffect que puedas usar con DataStore.save()? Prueba esto:
amplify codegen models
Debería crear/actualizar el directorio src/models con el archivo index.d.ts que contiene las 2 clases que estás buscando.
