Логотип Аурабаза
аурабазадокументы
документы›Путеводители›Generate TypeScript types

Генерируйте типы TypeScript из вашей базы данных.

Одна команда превращает ваши таблицы в типы. Затем ваш редактор отклоняет неправильный столбец или неправильное значение, прежде чем вы что-либо запустите.

4 мин читать·Уровень новичок·Пересмотрено 12 окт. 2026 г.
Этот текст на английском языке был создан автоматически на основе французского оригинала и еще не проверялся.
Эта страница была переведена автоматически. Английская версия является авторитетной.
#
Генерировать

1. Создайте файл

terminalbash
npx @aurabase/gen --url https://my-app.aurabase.cloud --key "$AURA_ANON_KEY" --out src/types/database.types.ts

Инструмент считывает схему вашего проекта и записывает файл. Без --url и --key он ищет AURABASE_URL и AURABASE_ANON_KEY (также NEXT_PUBLIC_AURABASE_URL, VITE_AURABASE_URL и AURABASE_SERVICE_ROLE_KEY) в вашей среде, а также в .env, .env.local и .env.development.

В проекте с двумя таблицами и двумя функциями он ответил:

text
[aurabase-gen] ✓ Types écrits dans /tmp/database.types.ts (2 table(s), 2 fonction(s), 0 enum(s), 0 vue(s)).

Запускайте его снова всякий раз, когда схема меняется. Добавьте --schema <name> для схемы, отличной от public, и --type-name для переименования основного типа.

#
Использовать

2. Используйте его с клиентом

src/lib/aurabase.tstypescript
import { createClient } from '@aurabase/aurabase-js'
import type { Database } from '../types/database.types'

export const aura = createClient<Database>(process.env.AURA_URL!, process.env.AURA_ANON_KEY!)

Сгенерированный тип описывает каждую таблицу с помощью Row, Insert и Update. На реальном файле компилятор выдал такие результаты:

checked.tstypescript
const { data } = await aura.from('todos').select('id, title, done')
const title: string | undefined = data?.[0]?.title   // хорошо

const wrong: number | undefined = data?.[0]?.title   // ошибка: строка не может быть присвоена числу
await aura.from('todos').insert({ title: 1 })         // ошибка: число не может быть присвоено строке
await aura.from('todos').insert({ title: 'ok' })      // ок: остальные столбцы имеют значения по умолчанию

В Insert столбец со значением по умолчанию или столбцом, допускающим значение NULL, является необязательным. В Update каждый столбец является необязательным.

#
Помощники

3. Типы строк для ваших компонентов

Todo.tsxtypescript
import type { Tables, TablesInsert, TablesUpdate, Enums } from '../types/database.types'

type Todo = Tables<'todos'>             // ряд, как читать
type NewTodo = TablesInsert<'todos'>    // что принимает функция Insert()
type TodoPatch = TablesUpdate<'todos'>  // какое обновление() принимает

Enums<'name'> дает значения перечисления базы данных.

#
Пределы

4. Что проверяется

  • Таблица, которой нет в сгенерированном файле, отклонена как , а не: aura.from('anything') все еще компилируется, а ее строки не типизированы.
  • Функции появляются под Functions со своими аргументами. Функция, возвращающая пользовательский тип строки, отображается как Json или unknown.
  • Файл отражает схему на момент его создания. Столбец, добавленный позже, неизвестен типам до тех пор, пока вы не запустите инструмент снова.
  • Используйте открытый ключ для генерации типов, если только некоторые таблицы не скрыты от него. Никогда не фиксируйте ключ service_role.
Последнее обновление · 12 окт. 2026 г.