𝗧𝘆𝗽𝗲-𝗦𝗮𝗳𝗲 𝗔𝗣𝗜 𝗖𝗹𝗶𝗲𝗻𝘁𝘀 𝗪𝗶𝘁𝗵𝗼𝘂𝘁 𝗖𝗼𝗱𝗲𝗴𝗲𝗻

API responses के लिए as User का उपयोग करना बंद करें।

as User कास्ट वह झूठ है जो आप अपने कंपाइलर से कहते हैं। TypeScript को लगता है कि डेटा सही है। Runtime पर, डेटा अक्सर गलत होता है। बग्स तीन फंक्शन बाद सामने आते हैं। Stack trace कोई मदद नहीं करता।

नेटवर्क वह जगह है जहाँ आप किसी पर भरोसा नहीं कर सकते। बाउंड्री (boundary) पर डेटा को वेरीफाई करें।

Zod का उपयोग करें। एक बार स्कीमा (schema) डिफाइन करें। Zod आपको टाइप और चेक दोनों देता है। आपके टाइप्स में विसंगति (drift) नहीं आएगी।

एक साधारण fetch wrapper बनाएँ। इसमें एक स्कीमा पास करें। बॉडी को चेक करने के लिए safeParse का उपयोग करें। डेटा चेक होने के बाद ही टाइप बनता है।

एरर्स (errors) थ्रो न करें। एक Result ऑब्जेक्ट रिटर्न करें। ok: true या ok: false के साथ एक union का उपयोग करें। यह आपको विफलताओं (failures) को हैंडल करने के लिए मजबूर करता है।

यही लॉजिक अपने URLs पर भी लागू करें। अपने query parameters को स्कीमा करें। रिक्वेस्ट भेजने से पहले ही टाइपो (typos) को रोकें।

Zod का उपयोग तब करें जब:

  • आपके पास कुछ ही endpoints हों।
  • आपके पास कोई OpenAPI spec न हो।
  • आप runtime safety चाहते हों।

Codegen का उपयोग तब करें जब:

  • आपके पास सैकड़ों endpoints हों।
  • आपके पास एक परफेक्ट spec हो।

कास्ट (cast) करना कोई चेक नहीं है। fetch के पास as User को एक code smell की तरह मानें।

बाउंड्री पर पार्स (parse) करें। अंदर भरोसा करें।

Source: https://dev.to/pavelespitia/type-safe-api-clients-in-typescript-without-a-code-generator-1k32