Wie kann man TS-Typen zwischen Frontend und Backend teilen, wenn beide auf unterschiedlichen Repos leben?JavaScript

Javascript-Forum
Anonymous
 Wie kann man TS-Typen zwischen Frontend und Backend teilen, wenn beide auf unterschiedlichen Repos leben?

Post by Anonymous »

Ich hatte in all meinen Projekten (persönliche und organisatorische Projekte) Probleme mit dem Versuch, eine Lösung für die gemeinsame Nutzung von Repo-Typen zu finden. Allen vorhandenen Lösungen mangelt es an etwas, sie funktionieren entweder nicht, wenn Sie separate Repos haben, oder erfordern eine gekoppelte Bereitstellung. Ich habe tRPC und ts-rest bereits ausprobiert, funktioniert gut, aber nur sehr eingeschränkt, also haben wir eine andere Lösung eingeführt, die grundsätzlich Typen vom Backend über https bei Bedarf bereitstellt und fs sie zur Build-Zeit in das Frontend schreibt (Plug-and-Play).
Jetzt kommt der Kampf. Um die Typen eines Endpunkts zu erhalten, haben wir zod verwendet, bei dem Sie einfach den Vertrag deklarieren, die Bibliothek ihn dann automatisch zur Erstellungszeit verfügbar macht und für Sie bereithält, was perfekt ist, ABER es fühlt sich nicht natürlich an, Sie müssen die Definition selbst schreiben,

Code: Select all

const createUser = route.post('/api/users') .withBody(CreateUserSchema) .returns(UserSchema);

app.post(createUser.path, async (req) => { const input = createUser.body(req.body); // Validation const newUser= await db.create(input) return createUser.response(newUser);// you could simply return newUser also , this only for validation });
Es ist in Ordnung, fühlt sich aber nicht natürlich an. Wir haben Annotation und AST ausprobiert (wobei man versucht, die Typen zur Build-Zeit aufzulösen), aber diese sind nicht universell, sodass wir in eine Sackgasse geraten sind. Ich kann keine Lösungen mehr finden.
Gibt es eine Lösung für die gemeinsame Nutzung von Repo-Typen über mehrere Repo-Typen hinweg? Wenn nicht, wie geht man das richtig, um das beste DX zu erhalten?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post