𝗧𝘆𝗽𝗲-𝗦𝗮𝗳𝗲 𝗔𝗣𝗜 𝗖𝗹𝗶𝗲𝗻𝘁𝘀 𝗪𝗶𝘁𝗵𝗼𝘂𝘁 𝗖𝗼𝗱𝗲𝗴𝗲𝗻
Hör auf, as User für API-Antworten zu verwenden.
Der as User-Cast ist eine Lüge, die du deinem Compiler erzählst. TypeScript glaubt, dass die Daten korrekt sind. Zur Laufzeit sind die Daten oft falsch. Bugs tauchen erst drei Funktionen später auf. Der Stacktrace hilft nicht weiter.
Im Netzwerk solltest du nichts vertrauen. Verifiziere Daten an der Grenze.
Nutze Zod. Definiere ein Schema einmalig. Zod liefert dir sowohl den Typ als auch die Prüfung. Deine Typen werden nicht auseinanderdriften.
Baue einen einfachen fetch-Wrapper. Übergib ihm ein Schema. Nutze safeParse, um den Body zu prüfen. Daten werden erst nach der Prüfung zu einem Typ.
Wirf keine Fehler. Gib ein Result-Objekt zurück. Nutze eine Union mit ok: true oder ok: false. Das zwingt dich dazu, Fehlerfälle zu behandeln.
Wende dieselbe Logik auf deine URLs an. Erstelle Schemata für deine Query-Parameter. Verhindere Tippfehler, bevor die Anfrage abgeschickt wird.
Nutze Zod, wenn:
- Du nur wenige Endpunkte hast.
- Du keine OpenAPI-Spezifikation hast.
- Du Typsicherheit zur Laufzeit willst.
Nutze Codegen, wenn:
- Du hunderte von Endpunkten hast.
- Du eine perfekte Spezifikation hast.
Ein Cast ist keine Prüfung. Betrachte as User als Code Smell in der Nähe von fetch.
Parse an der Grenze. Vertraue im Inneren.
Quelle: https://dev.to/pavelespitia/type-safe-api-clients-in-typescript-without-a-code-generator-1k32