কি হচ্ছে
সমস্যাটি এটি instanceof
জাভাস্ক্রিপ্ট থেকে তৈরি এবং জাভাস্ক্রিপ্টে ডানদিকের অপারেন্ডের জন্য instanceof
একটি মান প্রত্যাশা করে । বিশেষত, x instanceof Foo
জাভাস্ক্রিপ্টের Foo.prototype
প্রোটোটাইপ চেইনে কোথাও উপস্থিত রয়েছে কিনা তা দেখার জন্য একটি রানটাইম চেক সঞ্চালন করবে x
।
তবে, টাইপস্ক্রিপ্টে এসগুলির interface
কোনও এমিট নেই। তার অর্থ রানটাইমের সময় নেই Foo
বা Foo.prototype
বিদ্যমান নেই তাই এই কোডটি অবশ্যই ব্যর্থ হবে।
টাইপস্ক্রিপ্ট আপনাকে বলার চেষ্টা করছে এটি কখনই কাজ করতে পারে না । Foo
এটি কেবল একটি প্রকার, এটি মোটেই মূল্য নয়!
"এর পরিবর্তে আমি কী করতে পারি instanceof
?"
আপনি টাইপ গার্ড এবং ব্যবহারকারী-সংজ্ঞায়িত টাইপ গার্ডগুলিতে সন্ধান করতে পারেন ।
"কিন্তু আমি যদি শুধু একটি থেকে সুইচ কি interface
একটি থেকে class
?"
আপনি একটি থেকে অন্যটিতে যেতে প্রলুব্ধ করা যেতে পারে interface
একটি থেকে class
, কিন্তু আপনি টাইপ করা বিষয় এর কাঠামোগত টাইপ সিস্টেমের মধ্যে যে (যেখানে জিনিষ প্রাথমিকভাবে হয় উপলব্ধি করা উচিত ভিত্তিক আকৃতি ), আপনি কোনো একটি বস্তুর একটি প্রদত্ত শ্রেণী হিসেবে একই আকৃতি আছে যা তৈরী করতে পারে:
class C {
a: number = 10;
b: boolean = true;
c: string = "hello";
}
let x = new C()
let y = {
a: 10, b: true, c: "hello",
}
x = y;
y = x;
এই ক্ষেত্রে, আপনার কাছে x
এবং y
এটি একই ধরণের রয়েছে তবে আপনি যদি instanceof
কোনও একটিতে ব্যবহার করার চেষ্টা করেন তবে আপনি অন্যটির বিপরীত ফলাফল পাবেন। সুতরাং আপনি টাইপস্ক্রিপ্টে কাঠামোগত ধরণের সুবিধা নিচ্ছেন তবে প্রকারের সম্পর্কে আপনাকে সত্যিই বেশি কিছু বলবে instanceof
না ।
Foo | string
।