JSON থেকে TypeScript কনভার্টার

একটি API রেসপন্স পেস্ট করুন আর ব্যবহারের উপযোগী TypeScript interface বা type alias পান, নেস্টেড টাইপ, ঐচ্ছিক ফিল্ড ও null union স্বয়ংক্রিয়ভাবে নির্ণয় করা।

ব্রাউজারেই চলেসাইন-আপ লাগে নাকিছুই আপলোড হয় না

TypeScript

JSON থেকে TypeScript কীভাবে ব্যবহার করবেন

  1. বাঁ দিকের বক্সে একটি JSON নমুনা, যেমন API রেসপন্স, পেস্ট করুন বা একটি .json ফাইল খুলুন।
  2. রুট টাইপের নাম সেট করুন (যেমন User বা ApiResponse)।
  3. interface বা type ঘোষণা বেছে নিন এবং export, readonly বা সব-ঐচ্ছিক ফিল্ড চালু/বন্ধ করুন।
  4. নমুনা থেকে যেসব মান বোঝা যায় না, যেমন খালি অ্যারে ও null, সেগুলোর জন্য unknown (বেশি নিরাপদ) বা any বেছে নিন।
  5. তৈরি করা কোড কপি করুন বা .ts ফাইল হিসেবে ডাউনলোড করুন।

টাইপগুলো কীভাবে নির্ণয় করা হয়

  • Primitive: string, number ও boolean যথাক্রমে string, number ও boolean-এ ম্যাপ হয়।
  • নেস্টেড অবজেক্ট PascalCase-এ নিজস্ব নামযুক্ত interface হয়, তাই billing_address হয়ে যায় BillingAddress।
  • অবজেক্টের অ্যারে একক নামে একটি আইটেম টাইপে একত্র হয়: users থেকে User[]। কিছু আইটেমে অনুপস্থিত কী ঐচ্ছিক হয় (key?:)।
  • Null মান ওই কী-এর অন্য মানগুলোর সাথে মিলে যায়: string | null। যে কী সবসময় শুধু null, সেটি unknown বা any হয়।
  • মিশ্র অ্যারে (number | string)[]-এর মতো union অ্যারে হয়।
  • একই আকৃতি একবার ঘোষণা করে পুনরায় ব্যবহার করা হয়, আর ভিন্ন আকৃতি একই নাম পেলে সংখ্যাযুক্ত প্রত্যয় পায়।
  • বৈধ identifier নয় এমন কী, যেমন "first-name" বা "2fa", কোটের মধ্যে রাখা হয়।

interface বনাম type

সাধারণ অবজেক্ট আকৃতির জন্য দুটি প্রায় অদলবদলযোগ্য। interface ঘোষণা extend ও merge করা যায় এবং কম্পাইলারের ত্রুটি একটু স্পষ্ট দেয়। type alias দিয়ে union ও mapped type-ও প্রকাশ করা যায়। অনেক টিম API মডেলের জন্য interface এবং বাকি সবকিছুর জন্য type ব্যবহার করে; আপনার কোডবেস বা linter (@typescript-eslint/consistent-type-definitions) যা চায় তা বেছে নিন।

নমুনা থেকে আরও ভালো টাইপ পান

টাইপ ঠিক ততটাই সম্পূর্ণ হতে পারে যতটা নমুনা। ঐচ্ছিক ফিল্ডসহ একটি রেসপন্স, বা কয়েকটি ভিন্ন ধরনের আইটেমযুক্ত অ্যারে পেস্ট করুন, যাতে জেনারেটর ঐচ্ছিক ও nullable কী শনাক্ত করতে পারে। তারিখ ও enum-এর মতো মান JSON-এ সাধারণ string হিসেবে আসে; পরে হাতে সেগুলো সংকীর্ণ করুন, যেমন status: 'active' | 'disabled'। রানটাইম যাচাইয়ের জন্য তৈরি টাইপগুলোর সাথে Zod-এর মতো স্কিমা লাইব্রেরি ব্যবহার করুন।

সচরাচর জিজ্ঞাসিত প্রশ্ন

আমার JSON কি আপলোড হয়?
না। টাইপগুলো আপনার ব্রাউজারে JavaScript দিয়ে তৈরি হয়। টোকেন বা ব্যক্তিগত তথ্যযুক্ত API রেসপন্স কখনো আপনার ডিভাইস ছেড়ে যায় না।
ঐচ্ছিক প্রপার্টি কীভাবে শনাক্ত হয়?
একই অ্যারের অবজেক্টগুলোর কী ভিন্ন হলে, অন্তত একটি অবজেক্টে অনুপস্থিত কী ? দিয়ে ঐচ্ছিক চিহ্নিত হয়। একটিমাত্র অবজেক্ট হলে প্রতিটি কী আবশ্যক, যদি না আপনি সব ঐচ্ছিক টিক দেন।
<code>unknown</code> নাকি <code>any</code> ব্যবহার করব?
unknown বেশি নিরাপদ: ব্যবহারের আগে TypeScript আপনাকে মানটি সংকীর্ণ করতে বাধ্য করে। any ওই মানের টাইপ চেকিং বন্ধ করে দেয়। পরে টাইপ পরিমার্জন করার পরিকল্পনা থাকলেই কেবল এটি ব্যবহার করুন।
ISO তারিখের টাইপ কেন <code>string</code>?
JSON-এ কোনো তারিখ টাইপ নেই, তাই নেটওয়ার্কে তারিখ string হিসেবে আসে। পার্স করার পরে new Date() দিয়ে রূপান্তর করলে আপনার মডেলে প্রপার্টিটি Date করে দিন।
বড় বা গভীরভাবে নেস্টেড JSON কি সামলাতে পারে?
হ্যাঁ। তৈরির সময় ইনপুটের আকারের সাথে রৈখিক এবং লোকালি চলে, তাই কয়েক মেগাবাইটের রেসপন্সও এক সেকেন্ডেরও কম সময়ে রূপান্তরিত হয়।

সম্পর্কিত টুল