মডিউল পাঠ (1/2)
শর্তাধীন প্রকার এবং অনুমান
শর্তযুক্ত প্রকারগুলি আপনাকে উত্তরাধিকার সম্পর্কের উপর ভিত্তি করে অ-তুচ্ছ ধরনের সিদ্ধান্তগুলি প্রকাশ করতে দেয়। সিনট্যাক্স জাভাস্ক্রিপ্টের ত্রিনারি অপারেটরের সাথে সাদৃশ্যপূর্ণ:
T extends U ? X : Yযদি টাইপ T U-এ বরাদ্দযোগ্য হয়, তাহলে ফলাফলের ধরনটি হবে X, অন্যথায় এটি হবে Y।
বেসিক শর্তাধীন প্রকার
একটি শর্তাধীন প্রকার কম্পাইলের সময় একটি শর্ত মূল্যায়ন করে:
type IsNumber<T> = T extends number ? true : false;
type A = IsNumber<number>; // true
type B = IsNumber<string>; // falseনমনীয় এবং গতিশীল ইউটিলিটি ধরনের তৈরি করতে জেনেরিকের সাথে মিলিত হলে এই প্যাটার্নটি অত্যন্ত শক্তিশালী।
infer দিয়ে নিষ্কাশন টাইপ করুন
কন্ডিশনাল টাইপের extends ক্লজের ভিতরে, আমরা infer কীওয়ার্ডটি কম্পাইলার দ্বারা অনুমান করা টাইপ ভেরিয়েবল ঘোষণা করতে ব্যবহার করতে পারি।
উদাহরণস্বরূপ, যদি আমরা একটি ফাংশনের রিটার্ন টাইপ বের করতে চাই:
type GetReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type ExampleFunction = () => string;
type Return = GetReturnType<ExampleFunction>; // stringএই উদাহরণে, infer R TypeScript কে স্বয়ংক্রিয়ভাবে ফাংশনের রিটার্ন টাইপ নির্ধারণ করতে এবং শর্তসাপেক্ষের ইতিবাচক শাখায় R হিসাবে উপলব্ধ করতে বলে।
নিজে চেষ্টা করে দেখুন
ব্যায়াম 1: IsString প্রকার
IsString<T> নামে একটি জেনেরিক টাইপ তৈরি করুন যা T স্ট্রিং প্রসারিত করলে আক্ষরিক টাইপ সত্য দেয়, অন্যথায় মিথ্যা।
ইঙ্গিত দেখান
সিনট্যাক্স টাইপ ব্যবহার করুন IsString<T> = T স্ট্রিং প্রসারিত করে? সত্য: মিথ্যা; টাইপ চেক করতে।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
অনুশীলনী 2: infer দিয়ে একটি অ্যারে থেকে একটি প্রকার বের করা
একটি জেনেরিক প্রকার UnpackArray<T> সংজ্ঞায়িত করুন যা একটি অ্যারের T-এর উপাদান প্রকার বের করতে অনুমান ব্যবহার করে। যদি T একটি অ্যারে হয় (উদাহরণস্বরূপ U[]), তাহলে U ফেরত দিন, অন্যথায় একই ধরনের T ফেরত দিন।
ইঙ্গিত দেখান
T প্রসারিত ব্যবহার করুন (ইউ অনুমান করুন)[]? U : T অনুমানকৃত টাইপ ভেরিয়েবল U ঘোষণা এবং ফেরত দিতে।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ