JSON থেকে TypeScript কনভার্টার
একটি API রেসপন্স পেস্ট করুন আর ব্যবহারের উপযোগী TypeScript interface বা type alias পান, নেস্টেড টাইপ, ঐচ্ছিক ফিল্ড ও null union স্বয়ংক্রিয়ভাবে নির্ণয় করা।
ব্রাউজারেই চলেসাইন-আপ লাগে নাকিছুই আপলোড হয় না
JSON থেকে TypeScript কীভাবে ব্যবহার করবেন
- বাঁ দিকের বক্সে একটি JSON নমুনা, যেমন API রেসপন্স, পেস্ট করুন বা একটি
.jsonফাইল খুলুন। - রুট টাইপের নাম সেট করুন (যেমন
UserবাApiResponse)। interfaceবাtypeঘোষণা বেছে নিন এবংexport,readonlyবা সব-ঐচ্ছিক ফিল্ড চালু/বন্ধ করুন।- নমুনা থেকে যেসব মান বোঝা যায় না, যেমন খালি অ্যারে ও null, সেগুলোর জন্য
unknown(বেশি নিরাপদ) বাanyবেছে নিন। - তৈরি করা কোড কপি করুন বা
.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 কি আপলোড হয়?
ঐচ্ছিক প্রপার্টি কীভাবে শনাক্ত হয়?
? দিয়ে ঐচ্ছিক চিহ্নিত হয়। একটিমাত্র অবজেক্ট হলে প্রতিটি কী আবশ্যক, যদি না আপনি সব ঐচ্ছিক টিক দেন।<code>unknown</code> নাকি <code>any</code> ব্যবহার করব?
unknown বেশি নিরাপদ: ব্যবহারের আগে TypeScript আপনাকে মানটি সংকীর্ণ করতে বাধ্য করে। any ওই মানের টাইপ চেকিং বন্ধ করে দেয়। পরে টাইপ পরিমার্জন করার পরিকল্পনা থাকলেই কেবল এটি ব্যবহার করুন।ISO তারিখের টাইপ কেন <code>string</code>?
new Date() দিয়ে রূপান্তর করলে আপনার মডেলে প্রপার্টিটি Date করে দিন।