## Problem
Right now if you have the following schema with Json field:
```prisma
model User {
id Int @default(autoincrement()) @id
name String?
extendedProfile Json
}
```
You'll end up with a problem that you don't have strict type for `extendedProfile` field in `.ts`.
```typescript
const user = prismaService.user.findOne(...);
user.extendedProfile // we don't know the type of extendedProfile
```
The one way to fix it, is specify some interface in Um den Typ eines Json-Feldes in Prisma direkt in TypeScript strikt zu typisieren, gibt es aktuell keine native Unterstützung in der schema.prisma-Datei. Hier ist eine präzise Technik, um dies zu erreichen:
Definiere ein Interface in TypeScript für das erwartete JSON-Objekt:
interface ExtendedUserProfile {
field1: string;
field2: number;
}Verwende dann Type Assertion, um beim Zugriff auf das Json-Feld die Autovervollständigung und Typensicherheit zu gewährleisten:
const user = await prismaService.user.findUnique(...);
const extendedProfile = user.extendedProfile as ExtendedUserProfile;
console.log(extendedProfile.field1); // Zugriff mit TypensicherheitFür eine effizientere Nutzung und um redundante Typ-Angaben zu vermeiden, kannst Du eine Hilfsklasse implementieren, die das Prisma-Objekt kapselt:
class User {
id: number;
name?: string;
extendedProfile: ExtendedUserProfile;
constructor(prismaUser: PrismaUser) {
this.id = prismaUser.id;
this.name = prismaUser.name;
this.extendedProfile = prismaUser.extendedProfile as ExtendedUserProfile;
}
}
const user = new User(await prismaService.user.findUnique(...));Diese Methode umgeht den Overhead mehrfacher Type-Angaben und bietet gleichzeitig Typensicherheit und Autovervollständigung für Dein JSON-Feld.
Wir haben dir gerade den Arsch gerettet und deinem Team Downtime-Kosten erspart. Keine Paywall, kein Formular. Wenn dein Server wieder atmet, schließe den kybernetischen Kreislauf: