Logo Aurabase
aurabasedocuments
documents›Guides›Generate TypeScript types

Générez des types TypeScript à partir de votre base de données

Une commande transforme vos tables en types. Votre éditeur rejette alors une mauvaise colonne ou une mauvaise valeur avant d'exécuter quoi que ce soit.

4 min de lecture·Niveau débutant·Révisé le 12 oct. 2026
Ce texte anglais a été généré automatiquement à partir de l’original français et n’a pas encore été relu.
Cette page a été traduite automatiquement. La version anglaise fait foi.
#
Générer

1. Générez le fichier

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

L'outil lit le schéma de votre projet et écrit le fichier. Sans --url et --key, il recherche AURABASE_URL et AURABASE_ANON_KEY (également NEXT_PUBLIC_AURABASE_URL, VITE_AURABASE_URL et AURABASE_SERVICE_ROLE_KEY) dans votre environnement et dans .env, .env.local et .env.development.

Sur un projet avec deux tables et deux fonctions, il a répondu :

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

Réexécutez-le chaque fois que le schéma change. Ajoutez --schema <name> pour un schéma autre que public et --type-name pour renommer le type principal.

#
Utiliser

2. Utilisez-le avec le client

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!)

Le type généré décrit chaque table avec Row, Insert et Update. Sur un fichier réel, le compilateur a donné ces résultats :

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

const wrong: number | undefined = data?.[0]?.title   // erreur : la chaîne n'est pas attribuable au numéro
await aura.from('todos').insert({ title: 1 })         // erreur : le numéro ne peut pas être attribué à la chaîne
await aura.from('todos').insert({ title: 'ok' })      // ok : les autres colonnes ont des valeurs par défaut

Dans Insert, une colonne avec une colonne par défaut ou nullable est facultative. Dans Update, chaque colonne est facultative.

#
Aides

3. Types de lignes pour vos composants

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

type Todo = Tables<'todos'>             // une ligne, comme lu
type NewTodo = TablesInsert<'todos'>    // ce que insert() accepte
type TodoPatch = TablesUpdate<'todos'>  // ce que update() accepte

Enums<'name'> donne les valeurs d'une énumération de base de données.

#
Limites

4. Ce qui est vérifié

  • Une table qui ne figure pas dans le fichier généré est et non rejetée : aura.from('anything') est toujours compilée et ses lignes ne sont pas typées.
  • Les fonctions apparaissent sous Functions avec leurs arguments. Une fonction qui renvoie un type de ligne personnalisé s'affiche sous la forme Json ou unknown.
  • Le fichier reflète le schéma au moment où vous l'avez généré. Une colonne ajoutée ultérieurement est inconnue des types jusqu'à ce que vous exécutiez à nouveau l'outil.
  • Utilisez la clé publique pour générer les types, sauf si certaines tables y sont masquées. Ne validez jamais une clé service_role.
Dernière mise à jour · 12 oct. 2026