𝗧𝗿𝗣𝗖 𝗶𝗻 𝗧𝘆𝗽𝗲𝗦cript: 𝗦𝗶𝗺𝗽𝗹𝗶𝗳𝘆 𝗔𝗣𝗜 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁

একটি API তৈরি করার অর্থ সাধারণত REST অথবা GraphQL-এর মধ্যে যেকোনো একটি বেছে নেওয়া। আপনাকে রুট সেটআপ করা, স্কিমা ম্যানেজ করা এবং আপনার ফ্রন্টএন্ড ও ব্যাকএন্ডের মধ্যে টাইপ সিঙ্ক করার জন্য সময় ব্যয় করতে হয়। আপনি যদি উভয় দিকেই TypeScript ব্যবহার করেন, তবে এই প্রক্রিয়াটি বেশ ভারী মনে হতে পারে। শেষ পর্যন্ত আপনাকে একই টাইপ দুবার লিখতে হয়।

tRPC এই কাজের ধারাটি বদলে দেয়। এটি একটি আলাদা API কন্ট্রাক্টের প্রয়োজনীয়তা দূর করে। পরিবর্তে, এটি আপনার সার্ভার এবং ক্লায়েন্টের মধ্যে স্বয়ংক্রিয়ভাবে টাইপ শেয়ার করার জন্য TypeScript ব্যবহার করে।

কেন tRPC ব্যবহার করবেন?

  • ম্যানুয়াল টাইপ সিঙ্কিংয়ের প্রয়োজন নেই: আপনি সার্ভারে একটি ফাংশন লিখলে ক্লায়েন্ট তাৎক্ষণিকভাবে ইনপুট এবং আউটপুট টাইপগুলো জেনে যায়।
  • কোড জেনারেশনের প্রয়োজন নেই: টাইপ তৈরি করার জন্য আপনাকে বাড়তি কোনো টুল চালাতে হবে না।
  • স্কিমা ড্রিফট (schema drift) হওয়ার ভয় নেই: যেহেতু ক্লায়েন্ট সরাসরি সার্ভারের টাইপগুলো ব্যবহার করে, তাই আপনার ফ্রন্টএন্ড সবসময় ব্যাকএন্ডের সাথে সিঙ্ক থাকে।
  • দ্রুত ডেভেলপমেন্ট: এটি নেটওয়ার্ক রিকোয়েস্ট করার পরিবর্তে লোকাল ফাইলের কোনো ফাংশন কল করার মতো মনে হয়।

প্রথাগত পদ্ধতিগুলোর কিছু সীমাবদ্ধতা রয়েছে। REST-এর জন্য ম্যানুয়াল fetch কল এবং ডুপ্লিকেট টাইপ প্রয়োজন হয়। GraphQL একটি স্কিমা প্রদান করে কিন্তু resolver এবং codegen-এর মাধ্যমে জটিলতা বাড়িয়ে দেয়।

tRPC আপনার ব্যাকএন্ডকে টাইপ-সেফ ফাংশনের একটি সংগ্রহ হিসেবে বিবেচনা করে। আপনি রাউটারে (routers) প্রসিডিউর (procedures) ডিফাইন করেন। ক্লায়েন্ট আপনার রাউটার টাইপ ইমপোর্ট করে এবং সরাসরি এই প্রসিডিউরগুলো কল করতে পারে।

উদাহরণস্বরূপ কাজের ধাপ:

  1. সার্ভারে ভ্যালিডেশনসহ (যেমন Zod) একটি প্রসিডিউর ডিফাইন করুন।
  2. রাউটার টাইপটি এক্সপোর্ট করুন।
  3. ক্লায়েন্টে পূর্ণ autocompletion এবং টাইপ সেফটি সহ সেই প্রসিডিউরটি কল করুন।

কখন tRPC ব্যবহার করবেন:

  • আপনার ফ্রন্টএন্ড এবং ব্যাকএন্ড উভয় ক্ষেত্রেই TypeScript ব্যবহার করা হয়।
  • আপনি স্ট্যাকের উভয় পাশ নিয়ন্ত্রণ করেন।
  • আপনি ইন্টারনাল টুলস, অ্যাডমিন ড্যাশবোর্ড বা ফুল-স্ট্যাক Next.js অ্যাপ তৈরি করছেন।
  • আপনি একটি monorepo-তে কাজ করছেন।

কখন tRPC এড়িয়ে চলবেন:

  • আপনি অনেক ভিন্ন ভিন্ন ব্যবহারকারীর জন্য একটি পাবলিক API তৈরি করছেন।
  • আপনার ক্লায়েন্টরা Python বা Go-এর মতো ভিন্ন ভিন্ন ল্যাঙ্গুয়েজ ব্যবহার করে।
  • আপনার জটিল API ভার্সনিং প্রয়োজন।

tRPC সব ক্ষেত্রে REST বা GraphQL-এর বিকল্প নয়। যখন আপনার স্ট্যাক ইউনিফাইড (unified) থাকে, তখন এটি গতি এবং নিরাপত্তার জন্য একটি চমৎকার টুল। এটি API বাউন্ডারির জটিলতা দূর করে এবং আপনাকে লজিক লেখার দিকে মনোনিবেশ করতে সাহায্য করে।

উৎস: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3