কি হচ্ছে
সমস্যাটি এটি 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।