Как прикрутить автогенерацию типов на чистом Rest API (без GraphQL)?

Чтобы прикрутить автогенерацию типов на чистом Rest API с использованием TypeScript, вы можете использовать инструменты, такие как OpenAPI или Swagger.

1. OpenAPI (ранее известный как Swagger) - это набор спецификаций, который позволяет описывать и документировать ваше API. Вы можете определить пути, параметры, запросы и ответы в формате JSON или YAML. Вам нужно создать файл OpenAPI спецификаций, который описывает ваше API.

Пример файла OpenAPI спецификаций:

openapi: 3.0.3
info:
  title: My API
  version: 1.0.0
paths:
  /users:
    get:
      description: Get a list of users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string

2. После создания файла спецификаций OpenAPI вы можете использовать инструменты, такие как openapi-generator, чтобы сгенерировать TypeScript типы на основе спецификаций. Эти инструменты автоматически считывают спецификации и генерируют соответствующие типы TypeScript.

Пример применения openapi-generator для генерации TypeScript типов:

openapi-generator generate 
  -i swagger.yaml 
  -g typescript-axios 
  -o ./generated-types

3. После генерации типов TypeScript вы можете импортировать эти типы в свой код и использовать их для описания формата данных запросов и ответов вашего API.

Пример использования сгенерированных типов:

import { getUsers } from './api/users';

const users = await getUsers();
// users имеет тип User[], соответствующий схеме OpenAPI

Генерируемые типы документируют структуру данных, которые ваше API ожидает или возвращает. Это помогает вам избегать ошибок и предлагает автозаполнение типов в вашей IDE.

Вывод:

Используя спецификации OpenAPI и инструменты, такие как openapi-generator, вы можете автоматически генерировать TypeScript типы для вашего Rest API. Это помогает вам быть уверенными в формате данных, которые ваше API ожидает или возвращает, и предлагает автозаполнение типов в вашей IDE.