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

Prisma Schema zu TypeScript Interfaces & Typen Generator

Prisma Schema-Modelle, Enums, optionale Felder und Relationen in eigenständige TypeScript-Interfaces und Types ohne Prisma Client Laufzeitumgebung extrahieren.

Voreinstellungen:
Prisma-Schema-Eingabeschema.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;
}
Prisma-Modelle
6

Extrahierte Datenmodelle & Enums

TypeScript-Typen
116

Generierte Interfaces & Hilfstypen

Null Laufzeit-Abhängigkeit
0 kB

Keine Prisma-Binaries oder npm-Pakete erforderlich

Reiner Browser-Lexer & Parser

Analysiert Modelle, Enums, zusammengesetzte Attribute (@@id, @@unique, @@map), Standardwerte und Kaskaden direkt im Browser ohne Node.js oder Prisma CLI.

100% Client-Datenschutz

Ihre Datenbankschemata und Architekturentwürfe verlassen niemals den Browser. Keine Server-Uploads, Tracking oder externe Netzwerkaufrufe.

Universeller TypeScript & Zod Export

Erzeugen Sie sofort saubere Typen für Frontend-Apps, Serverless Functions, Monorepos und isomorphe Zod-Laufzeitvalidierungen.

Technische Referenz & Architektur-Leitfaden

Prisma Schema zu TypeScript Schnittstellen & Typen Generator — Referenz-Leitfaden

Prisma Schema-Modelle, Enums, optionale Felder und Relationen in eigenständige TypeScript-Interfaces und Types ohne Prisma Client Laufzeitumgebung extrahieren.

Wichtige Parameter & Steuerelemente

DeklarationsstilEnum (interface | type)

Legt fest, ob Modelle als TypeScript-Interfaces oder Type-Aliase generiert werden.

Standard: interface
Relationen einbindenBoolean

Steuert, ob relationale Modelfelder und Arrays in die generierten Typen übernommen werden.

Standard: true
DateTime-DarstellungEnum (Date | string | Date | string)

TypeScript-Zieltyp für Prisma DateTime-Skalarfelder.

Standard: Date
Syntax für optionale FelderEnum (nullable | optional | both)

Schreibweise für optionale Prisma-Felder (Null-Union, optionaler Modifikator '?' oder beides).

Standard: both
Enum-GenerierungsstilEnum (enum | const-object | union)

Ausgabeformat für Prisma-Enums als natives TypeScript-Enum, const-Objekt oder String-Union.

Standard: enum

Profi-Tipps & Best Practices

Zero-Runtime Typen-Sharing im Monorepo

Teilen Sie Datenbankverträge direkt mit Frontend- und Edge-Paketen, ohne die umfangreiche @prisma/client-Laufzeitumgebung oder Binärdateien installieren zu müssen.

Prisma-Felder mit '?' repräsentieren

Prisma-Felder mit '?' repräsentieren SQL-NULL. Verwenden Sie 'both' oder 'nullable', um T | null beizubehalten und Laufzeitfehler in Schnittstellen zu vermeiden.

Flache DTO-Erstellung per Klick

Deaktivieren Sie Relationsfelder, um kompakte, flache Datensatztypen für Transferobjekte (DTOs), Formulare und Insert-Payloads zu erhalten.

Häufige Fallstricke & Fehlerbehebung

Prisma-spezifische Attribute (@@map, @@index) verursachen Fehler

Datenbank-Attribute wie @@map, @@index und @db.VarChar dienen als Metadaten und werden vom TypeScript-Parser automatisch und sicher ignoriert.

Zirkuläre Relationen führen zu tiefen Typ-Rekursionen

Wenn zwei Modelle gegenseitig aufeinander verweisen (z. B. User und Post), deaktivieren Sie Relationen oder nutzen Sie Partial-Typen zur Auflösung der Schleife.

Typisierung von Json- und Decimal-Feldern

Standardmäßig wird Json als Record<string, unknown> und Decimal als number | string abgebildet. Diese Typen können nach Bedarf im Code parametrisiert werden.

Häufig gestellte Fragen (FAQ)

Warum eigenständige TypeScript-Typen statt @prisma/client verwenden?▼

Prisma Client erfordert native Query-Engines und erzeugt erhebliche Bundle-Größen. Reine TypeScript-Typen bieten null Laufzeit-Overhead und lassen sich problemlos im Browser, in Mobile Apps oder auf Edge-Workern einsetzen.

Wie werden Prisma-Skalartypen auf TypeScript abgebildet?▼

String wird zu string, Int und Float zu number, Boolean zu boolean, BigInt zu bigint, DateTime zu Date oder string, Decimal zu number | string und Json zu Record<string, unknown>.

Können Enums als String-Union anstelle nativer Enums ausgegeben werden?▼

Ja. Sie können zwischen klassischen TypeScript-Enums, 'as const'-Objekten oder reinen String-Union-Typen (z. B. 'ADMIN' | 'USER') wählen.

Werden 1:1-, 1:n- und n:m-Relationen unterstützt?▼

Ja. Verknüpfte Modelle und Beziehungs-Arrays können vollständig eingebettet, als optional deklariert oder für flache Tabellensichten ausgeschlossen werden.

Wird das Prisma-Schema an externe Server übertragen?▼

Nein. Die gesamte Analyse und Typengenerierung erfolgt zu 100 % lokal in Ihrem Browser. Ihr Schema verlässt Ihren Computer zu keinem Zeitpunkt.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →