কম্পিউটার

জাভাস্ক্রিপ্ট টাইপ ত্রুটি

জাভাস্ক্রিপ্টে, একটি TypeError হল একটি বস্তু যা একটি অপারেশন করার ফলে একটি ত্রুটি উপস্থাপন করে যা সঞ্চালিত করা যায় না, সাধারণত কারণ একটি অপারেশনের একটি মান প্রত্যাশিত ধরনের নয়।

কিন্তু প্রকার কি কি? জাভাস্ক্রিপ্ট স্পেসিফিকেশনের সর্বশেষ সংস্করণ, ECMAScript অনুযায়ী, নয়টি ডেটা এবং কাঠামোগত প্রকার রয়েছে। যার মধ্যে ছয়টি, (কখনও কখনও সাতটি যদি আমরা শূন্য গণনা করি), আদিম ডেটা প্রকার, যেগুলি স্ট্রিং, সংখ্যা, বিজিন্ট, বুলিয়ান, অনির্ধারিত এবং প্রতীক। অপারেশন চলাকালীন কেন TypeErrors ট্রিগার হয় তা বোঝার আগে, আসুন আমরা জাভাস্ক্রিপ্টে আমাদের নয়টি প্রকার পর্যালোচনা করি। যদি আমরা কখনও এমন একটি অবস্থানে থাকি যেখানে আমরা কীভাবে একটি টাইপকে শ্রেণীবদ্ধ করতে পারি তা নিয়ে অনিশ্চিত, আমরা typeof অপারেটর ব্যবহার করতে পারি।

  1. অনির্ধারিত:এক প্রকার মান যা স্বয়ংক্রিয়ভাবে ভেরিয়েবলের সাথে সংজ্ঞায়িত হয়ে যায় যা এইমাত্র ঘোষণা করা হয়েছে। আমরা যখন আমাদের ভেরিয়েবলের সাথে একটি মান সংজ্ঞায়িত করতে বা যোগ করতে ভুলে যাই তখন আমরা প্রায়ই অনির্ধারিত একটি টাইপ এরর মান পাই৷
  2. বুলিয়ান:লজিক্যাল ডাটা টাইপ যেখানে শুধুমাত্র সত্য বা মিথ্যা মান রয়েছে।
  3. সংখ্যা:সংখ্যাসূচক ডেটা প্রকার।
  4. স্ট্রিং:ব্যাকটিক্স, গান, বা ডবল উদ্ধৃতিগুলির মধ্যে অক্ষরের ক্রম।
  5. BigInt:সাংখ্যিক ডেটা টাইপ কখনও কখনও অন্যান্য প্রোগ্রামিং ভাষায় bignums নামে পরিচিত।
  6. প্রতীক:মান যেটি প্রতীক ফাংশনটি চালু করার মাধ্যমে তৈরি একটি অনন্য শনাক্তকারীকে প্রতিনিধিত্ব করে।
  7. অবজেক্ট:একটি স্ট্রাকচারাল টাইপ এবং প্রায় সবকিছুই 'নতুন' কীওয়ার্ড তৈরি করতে সক্ষম, যেমন একটি অ্যারে, অবজেক্ট, ম্যাপ, সেট ইত্যাদি।
  8. ফাংশন:আরেকটি নন-ডেটা স্ট্রাকচার যা একটি কোড স্নিপেট যা কোডের অন্যান্য টুকরা দ্বারা কল করা যেতে পারে।
  9. নাল:সাধারণত একটি ইচ্ছাকৃত মান এমন একটি বস্তু বা ঠিকানা উপস্থাপন করে যা বিদ্যমান নেই।

সবচেয়ে সাধারণ জাভাস্ক্রিপ্ট টাইপ ত্রুটি এবং কীভাবে সেগুলি ঠিক করবেন

পরিবর্তন করা যায় না এমন একটি মান পরিবর্তন করার চেষ্টা করার সময় বা একটি অনুপযুক্ত উপায়ে একটি মান ব্যবহার করার সময় টাইপ ত্রুটিগুলি আপনার দিকে ছুড়ে দেওয়া যেতে পারে। এটি তখনও ঘটতে পারে যখন একটি আর্গুমেন্ট এমন একটি ফাংশনে পাঠানো হয় যা ফাংশনের অভ্যন্তরে ফাংশন বা অপারেটর দ্বারা প্রত্যাশিত প্রকারের সাথে বেমানান৷

একটি মান পরিবর্তন করা যা পরিবর্তন করা যায় না

আপনি যখন কোন কিছুর মান নির্ধারণ করতে const কীওয়ার্ড ব্যবহার করেন, এর মানে এটি ধ্রুবক, এটি পরিবর্তন হবে না। একটি ধ্রুবক ভেরিয়েবলের মান পরিবর্তন করার চেষ্টা করলে একটি TypeError হবে।

const a = 5
a = "5"
// Uncaught TypeError: Assignment to constant variable.

আমরা "5" এর স্ট্রিং সনাক্ত করতে চাই এমন শনাক্তকারীর নাম পরিবর্তন করে আমরা এটি ঠিক করতে পারি।

const a = 5
const b = "5"

একটি অনুপযুক্ত উপায়ে একটি মান ব্যবহার করা

বিকাশকারীদের অবশ্যই নিশ্চিত করতে হবে যে মানগুলি উদ্দেশ্য হিসাবে ব্যবহার করা হচ্ছে৷ নীচের উদাহরণে, গারফিল্ড ক্যাট() ফাংশনের একটি উদাহরণ কিনা তা যাচাই করার চেষ্টা করার সময় "বিড়াল" এবং "গারফিল্ড" পিছনে রয়েছে৷

function Cat() {}
function Dog() {}
 
let garfield = new Cat()
 
Cat instanceof garfield
 
// Uncaught TypeError: Right-hand side of 'instanceof' is not callable

আমরা দুটির ক্রম সংশোধন করে এটি ঠিক করতে পারি।

function Cat() {}
function Dog() {}
 
let garfield = new Cat()
 
garfield instanceof Cat

একটি যুক্তি যা একটি ফাংশন দ্বারা প্রত্যাশিত প্রকারের সাথে বেমানান

একটি অপারেশন কোডিং করার সময়, বিকাশকারীদের নিশ্চিত করতে হবে যে তারা এমনভাবে মান ব্যবহার করছে যাতে তারা একটি পছন্দসই ফলাফল পেতে সক্ষম হয়। কোনো বস্তুর অনুপস্থিতি বোঝাতে null-এর মান ইচ্ছাকৃতভাবে ব্যবহার করা যেতে পারে, কিন্তু নিচে যেভাবে এটি ব্যবহার করা হয়েছে তার ফলে একটি TypeError হবে কারণ এটি একটি আর্গুমেন্ট হিসেবে ব্যবহার করা হচ্ছে যা ফাংশনের প্রত্যাশিত প্রকারের সাথে সামঞ্জস্যপূর্ণ নয়।

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।

 function readingErrorsAreImportant(a){
    if(a.length === 5){
      return "equals five"
    } else if(a.length > 5) {
      return "Greater than five"
    }  else {
      return "Less than five"
    }
   }
   console.log(readingErrorsAreImportant(null))
 
   // Uncaught TypeError: Cannot read property 'length' of null

আমরা এটি প্রত্যাশিত একটি মান টাইপ পাস করে এটি ঠিক করতে পারি। একটি সংখ্যাসূচক মান টাইপ মত.

function readingErrorsAreImportant(a){
    if(a.length === 5){
      return "equals five"
    } else if(a.length > 5) {
      return "Greater than five"
    }  else {
      return "Less than five"
    }
   }
   console.log(readingErrorsAreImportant(10))



উপসংহার

আপনার কোডটি কীভাবে ডিবাগ করতে হয় তা বোঝার জন্য আপনার কোডটি কেন একটি টাইপ ত্রুটি নিক্ষেপ করছে তা বুঝতে সক্ষম হওয়া গুরুত্বপূর্ণ। আপনি যদি কখনও এমন অবস্থানে থাকেন যেখানে আপনি কীভাবে একটি টাইপকে শ্রেণীবদ্ধ করবেন তা নিয়ে অনিশ্চিত হন, তাহলে টাইপঅফ অপারেটর আপনাকে নয়টি ডেটা বা স্ট্রাকচারাল প্রকারের একটি ফেরত দেবে, যাতে আপনার ডিবাগিংয়ের সাথে কীভাবে এগিয়ে যেতে হবে তা আরও ভালভাবে বোঝার জন্য৷


  1. জাভাস্ক্রিপ্টে কাস্টিং টাইপ করুন।

  2. জাভাস্ক্রিপ্ট টাইপ জবরদস্তি কি?

  3. TypeError:'undefined' জাভাস্ক্রিপ্টে কোনো বস্তু নয়

  4. JavaScript - href মান পান