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

Generador de Interfaces y Tipos TypeScript desde Prisma Schema

Extrae modelos, enums, campos opcionales y relaciones de Prisma Schema en interfaces TypeScript independientes sin depender del runtime de Prisma Client.

Preajustes:
Entrada de Esquema Prismaschema.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;
}
Modelos Prisma
6

Modelos de datos y enums extraídos

Tipos TypeScript
116

Interfaces y tipos auxiliares generados

Cero Dependencias en Runtime
0 kB

Sin binarios ni dependencias de Prisma Client

Analizador Léxico en el Navegador

Analiza modelos, enumeraciones, atributos compuestos (@@id, @@unique, @@map), valores por defecto y relaciones directamente en el navegador sin Node.js ni Prisma CLI.

Privacidad 100% Garantizada

Las definiciones de su esquema nunca salen de su navegador. Cero subidas a servidores, rastreo o peticiones externas.

Salida Universal TypeScript y Zod

Genere al instante tipos limpios para aplicaciones web, funciones serverless, monorepositorios y esquemas de validación Zod isomorfos.

Referencia técnica y guía de arquitectura

Guía de Desarrollo: Generador de Interfaces y Tipos TypeScript desde Prisma Schema — Guía de referencia

Extrae modelos, enums, campos opcionales y relaciones de Prisma Schema en interfaces TypeScript independientes sin depender del runtime de Prisma Client.

Parámetros clave y controles

Estilo de declaraciónEnum (interface | type)

Define si los modelos se generan como interfaces TypeScript o alias de tipo.

Por defecto: interface
Incluir relacionesBoolean

Determina si los campos de relación y arrays entre modelos se incluyen en los tipos generados.

Por defecto: true
Representación de DateTimeEnum (Date | string | Date | string)

Tipo TypeScript utilizado para los campos escalares DateTime de Prisma.

Por defecto: Date
Sintaxis de campos opcionalesEnum (nullable | optional | both)

Convención para campos opcionales de Prisma (unión con null, operador '?' o ambos).

Por defecto: both
Formato de exportación de EnumEnum (enum | const-object | union)

Sintaxis de salida para enums de Prisma como enum nativo, objeto const o unión de cadenas.

Por defecto: enum

Consejos profesionales y mejores prácticas

Comparta contratos de base de datos

Comparta contratos de base de datos con aplicaciones frontend y edge sin empaquetar los motores binarios pesados de @prisma/client.

Los campos con '?' en Prisma indican

Los campos con '?' en Prisma indican NULL de SQL. Use el modo 'both' o 'nullable' para preservar la semántica T | null y evitar errores en APIs.

Generación rápida de DTOs planos

Desactive los campos de relación para obtener tipos de registros directos y planos, ideales para DTOs, mutaciones y esquemas de validación de formularios.

Errores comunes y solución de problemas

Errores provocados por atributos como @@map o @@index

Las directivas de base de datos como @@map, @@index y @db.VarChar son metadatos y el parser las descarta automáticamente sin afectar la generación de interfaces.

Referencias circulares entre relaciones provocan recursión profunda

Si existen relaciones bidireccionales entre modelos (ej. User y Post), desactive las relaciones o genere interfaces parciales para romper la recursión infinita.

Tipado por defecto de tipos escalares Json y Decimal

Por defecto, Json se asigna a Record<string, unknown> y Decimal a number | string. Puede aplicar tipos genéricos personalizados tras la exportación.

Preguntas frecuentes (FAQ)

¿Por qué generar tipos TypeScript independientes en lugar de usar @prisma/client?▼

Prisma Client incluye un motor de consultas binario y código en tiempo de ejecución de gran tamaño. Los tipos TypeScript puros ofrecen cero peso en el bundle final y máxima compatibilidad con navegadores y funciones Edge.

¿Cómo se transforman los tipos escalares de Prisma a TypeScript?▼

String se transforma en string, Int y Float en number, Boolean en boolean, BigInt en bigint, DateTime en Date o string, Decimal en number | string y Json en Record<string, unknown>.

¿Es posible exportar enums como uniones de literales en vez de enums de TypeScript?▼

Sí. Puede configurar la herramienta para emitir enums nativos, objetos 'as const' o uniones de strings directas (ej. 'ADMIN' | 'USER').

¿Se incluyen las relaciones entre modelos en el código generado?▼

Sí. Las relaciones 1 a 1, 1 a muchos y muchos a muchos se pueden incluir de forma completa, marcarse como opcionales o excluirse para generar tipos planos.

¿Mi archivo schema.prisma se envía a algún servidor?▼

No. Todo el análisis sintáctico y la generación de código TypeScript se ejecuta en el navegador mediante JavaScript/AST local, garantizando la total privacidad de su esquema.

Herramientas y utilidades relacionadas

Todas las herramientas →
Guía de Desarrollo: Generador de Clientes API Axios TypeScript desde OpenAPI y SwaggerDesarrollo

Genere funciones de cliente HTTP Axios e interfaces de parámetros con seguridad de tipos estricta a partir de especificaciones OpenAPI 3.0 y Swagger JSON/YAML.

Abrir herramienta→
Guía del Desarrollador del Generador de Clientes TypeScript con Fetch Nativo desde OpenAPI y SwaggerDesarrollo

Genere métodos de API en TypeScript con fetch nativo sin dependencias, serialización de consultas, cabeceras y tipos de respuesta.

Abrir herramienta→
Guía del Desarrollador del Generador de DDL SQL CREATE TABLE desde Esquemas Drizzle ORMDesarrollo

Convierta definiciones pgTable, mysqlTable y sqliteTable de Drizzle ORM en scripts de migración ejecutables SQL CREATE TABLE con total precisión.

Abrir herramienta→
Guía del generador de flujos de trabajo YAML para GitHub Actions CI/CDDesarrollo

Cree canalizaciones de flujos de trabajo YAML de GitHub Actions listas para producción para Node.js, Go, Python, compilaciones de Docker, pruebas y lanzamientos automatizados.

Abrir herramienta→
Generador de Configuraciones Linux Logrotate (Retención y Compresión)Desarrollo

Genere archivos de configuración para /etc/logrotate.d/ listos para producción con rotación diaria/semanal, compresión gzip, dateext, límites de tamaño y scripts postrotate.

Abrir herramienta→
Guía de Desarrollo del Generador de Configuración YAML de Ubuntu NetplanDesarrollo

Genere configuraciones netplan YAML para Ubuntu 20.04/22.04/24.04: IPs estáticas, DHCP, servidores DNS, rutas de puerta de enlace, bridges y bonds.

Abrir herramienta→