Búsqueda de sitios web

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:

  1. ¿Es por diseño que Amplify no genera tipos base?

  2. ¿Cómo obtener el tipo base de EventEffect?

  3. ¿Para qué se utiliza el schema.json generado?

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.

Artículos relacionados