Prisma vers TypeScript
PRISMA 3 / 4 / 5 / 6 COMPATIBLE

Générateur d'Interfaces et Types TypeScript depuis un Schéma Prisma

Extrayez les modèles, énumérations, champs optionnels et relations de votre schéma Prisma sous forme d'interfaces TypeScript autonomes sans dépendance au runtime Prisma Client.

Préréglages :
Schéma Prisma en Entréeschema.prisma
/**
 * Standalone TypeScript Definitions
 * Generated from Prisma Schema without Prisma Client runtime
 * Generated via ToolsAA Prisma-to-TypeScript Engine
 */

// ==========================================
// Enums
// ==========================================

export enum Role {
  CUSTOMER = 'CUSTOMER',
  VENDOR = 'VENDOR',
  ADMIN = 'ADMIN',
}

export enum OrderStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  SHIPPED = 'SHIPPED',
  DELIVERED = 'DELIVERED',
  CANCELLED = 'CANCELLED',
}

// ==========================================
// Models & Types
// ==========================================

/**
 * User customer or merchant account
 * @table users
 * @id [id]
 */
export interface User {
  id: string; // @id @default(uuid()
  email: string; // @unique
  name?: string | null;
  role: Role; // @default(CUSTOMER)
  walletBalance: number; // @default(0.00)
  createdAt: Date; // @default(now()
  updatedAt: Date; // @updatedAt
  orders?: Order[]; // @relation
  profile?: UserProfile | null; // @relation
}

/**
 * @id [id]
 */
export interface UserProfile {
  id: string; // @id @default(cuid()
  userId: string; // @unique
  user?: User; // @relation
  phone?: string | null;
  address?: string | null;
  city?: string | null;
  country: string; // @default("US")
  metadata?: Record<string, unknown> | null;
}

/**
 * @table products
 * @id [id]
 */
export interface Product {
  id: number; // @id @default(autoincrement()
  sku: string; // @unique
  title: string;
  description?: string | null;
  price: number;
  inventory: number; // @default(0)
  isPublished: boolean; // @default(true)
  categoryId?: number | null;
  category?: Category | null; // @relation
  orderItems?: OrderItem[]; // @relation
  createdAt: Date; // @default(now()
}

/**
 * @id [id]
 */
export interface Category {
  id: number; // @id @default(autoincrement()
  slug: string; // @unique
  name: string;
  products?: Product[]; // @relation
}

/**
 * @table orders
 * @id [id]
 */
export interface Order {
  id: string; // @id @default(uuid()
  orderNumber: string; // @unique
  userId: string;
  user?: User; // @relation
  status: OrderStatus; // @default(PENDING)
  totalAmount: number;
  items?: OrderItem[]; // @relation
  createdAt: Date; // @default(now()
  updatedAt: Date; // @updatedAt
}

/**
 * @id [id]
 */
export interface OrderItem {
  id: number; // @id @default(autoincrement()
  orderId: string;
  order?: Order; // @relation
  productId: number;
  product?: Product; // @relation
  quantity: number; // @default(1)
  unitPrice: number;
}
Modèles Prisma
6

Modèles de données et énumérations extraits

Types TypeScript
116

Interfaces et utilitaires purs générés

Zéro Dépendance Runtime
0 kB

Aucun binaire ni package Prisma Client requis

Analyseur Syntaxique dans le Navigateur

Analyse les modèles, énumérations, attributs composites (@@id, @@unique, @@map), valeurs par défaut et relations directement dans le navigateur sans Node.js ni Prisma CLI.

Confidentialité 100% Locale

Vos schémas de base de données ne quittent jamais votre navigateur. Zéro transfert vers un serveur externe ni suivi de données.

Sortie Universelle TypeScript & Zod

Générez instantanément des types TypeScript purs pour vos applications web, fonctions serverless, monorepos et schémas Zod isomorphes.

Référence technique et guide d'architecture

Guide Développeur : Générateur d'Interfaces et Types TypeScript depuis Prisma Schema — Guide de référence

Extrayez les modèles, énumérations, champs optionnels et relations de votre schéma Prisma sous forme d'interfaces TypeScript autonomes sans dépendance au runtime Prisma Client.

Paramètres clés et contrôles

Style de déclarationEnum (interface | type)

Définit si les modèles sont générés en tant qu'interfaces TypeScript ou alias de type.

Par défaut : interface
Inclure les relationsBoolean

Détermine si les champs et tableaux de relations entre modèles sont inclus dans les types générés.

Par défaut : true
Représentation de DateTimeEnum (Date | string | Date | string)

Type TypeScript cible pour les champs scalaires DateTime de Prisma.

Par défaut : Date
Syntaxe des champs optionnelsEnum (nullable | optional | both)

Convention pour les champs optionnels Prisma (union avec null, modificateur '?' ou les deux).

Par défaut : both
Format d'exportation d'EnumEnum (enum | const-object | union)

Syntaxe de sortie pour les énumérations Prisma (enum natif, objet const ou union de chaînes).

Par défaut : enum

Conseils de pro et bonnes practices

Partagez les contrats de modèles de

Partagez les contrats de modèles de base de données directement avec le frontend et les environnements edge sans installer le package volumineux @prisma/client ni ses binaires natifs.

Les champs avec '?' dans Prisma

Les champs avec '?' dans Prisma correspondent à un NULL en base. Utilisez 'both' ou 'nullable' pour préserver T | null et éviter les erreurs d'incohérence dans vos API.

Création instantanée de DTOs plats

Désactivez les champs relationnels pour obtenir des types représentant exactement les enregistrements de table plats, parfaits pour les DTOs et formulaires de saisie.

Pièges courants et dépannage

Attributs Prisma spécifiques (@@map, @@index) provoquant des anomalies

Les attributs tels que @@map, @@index et les annotations natives (@db.VarChar) sont traités comme de simples métadonnées et sont ignorés en toute sécurité lors de la conversion.

Références circulaires entre relations générant une récursion TypeScript excessive

En cas de relations bidirectionnelles entre modèles (ex. User et Post), désactivez les relations ou employez des interfaces partielles pour neutraliser les boucles infinies.

Typage par défaut des champs Json et Decimal

Par défaut, Json est converti en Record<string, unknown> et Decimal en number | string. Vous pouvez substituer ces types par des génériques personnalisés après génération.

Foire aux questions (FAQ)

Pourquoi générer des types TypeScript autonomes plutôt que d'utiliser @prisma/client ?▼

Prisma Client compile des moteurs de requêtes natifs lourds et augmente le poids de votre bundle. Des types TypeScript purs offrent une empreinte nulle au runtime et s'intègrent parfaitement dans les navigateurs, applications mobiles ou Edge Functions.

Comment les types scalaires Prisma sont-ils convertis en TypeScript ?▼

String devient string, Int et Float deviennent number, Boolean devient boolean, BigInt devient bigint, DateTime devient Date ou string, Decimal devient number | string et Json devient Record<string, unknown>.

Peut-on exporter les enums sous forme d'unions de chaînes plutôt que d'enums TypeScript natifs ?▼

Oui. Vous pouvez configurer la sortie sous forme d'enums natifs, d'objets 'as const' ou d'unions pures de littéraux de chaînes (ex. 'ADMIN' | 'USER').

Les relations 1-à-1, 1-à-plusieurs et plusieurs-à-plusieurs sont-elles prises en charge ?▼

Oui. Vous pouvez choisir d'inclure toutes les relations, de les rendre optionnelles ou de les omettre complètement pour modéliser des tables plates.

Mon fichier schema.prisma est-il envoyé sur un serveur tiers ?▼

Non. L'analyse syntaxique et la génération de code TypeScript s'effectuent intégralement en local dans la mémoire de votre navigateur, garantissant la confidentialité absolue de votre schéma.

Outils et utilitaires connexes

Tous les outils →
Guide Développeur : Générateur de Client API Axios TypeScript depuis OpenAPI et SwaggerDéveloppement

Générez des fonctions de client HTTP Axios sécurisées et typées ainsi que des interfaces de paramètres à partir de spécifications OpenAPI 3.0 et Swagger JSON/YAML.

Ouvrir l'outil→
Guide Développeur du Générateur de Client TypeScript Fetch Natif depuis OpenAPI & SwaggerDéveloppement

Générez des clients d'API TypeScript en fetch natif sans dépendance externe, avec sérialisation des requêtes, en-têtes et typage complet.

Ouvrir l'outil→
Guide Développeur : Générateur de DDL SQL CREATE TABLE depuis Schéma Drizzle ORMDéveloppement

Traduisez fidèlement les définitions pgTable, mysqlTable et sqliteTable de Drizzle ORM en scripts de migration SQL CREATE TABLE exécutables.

Ouvrir l'outil→
Guide de développement pour le générateur de workflows YAML GitHub Actions CI/CDDéveloppement

Créez des pipelines YAML GitHub Actions prêts pour la production pour Node.js, Go, Python, conteneurs Docker, tests unitaires et déploiements automatisés.

Ouvrir l'outil→
Générateur de Configuration Linux Logrotate (Rétention & Compression)Développement

Générez des fichiers de configuration /etc/logrotate.d/ prêts pour la production avec rotation quotidienne/hebdomadaire, compression gzip, dateext, limites de taille et scripts postrotate.

Ouvrir l'outil→
Guide Développeur du Générateur de Configuration YAML Ubuntu NetplanDéveloppement

Générez des configurations YAML Netplan pour Ubuntu 20.04/22.04/24.04 : adresses IP statiques, DHCP, résolveurs DNS, passerelles, ponts et agrégations de liens.

Ouvrir l'outil→