জাস্টিন ফাগনানী ES2015-এ ক্লাস এক্সপ্রেশন দিয়ে ক্লাস তৈরি করা যায় এই বিষয়টি ব্যবহার করে একাধিক ক্লাস রচনা করার জন্য খুব পরিষ্কার ( imho ) উপায় বর্ণনা করেছেন ।
এক্সপ্রেশন বনাম ঘোষণা
মূলত, আপনি যেমন একটি এক্সপ্রেশন দিয়ে একটি ফাংশন তৈরি করতে পারেন ঠিক তেমন:
function myFunction() {} // function declaration
var myFunction = function(){} // function expression
আপনি ক্লাসগুলির সাথে একই কাজ করতে পারেন:
class MyClass {} // class declaration
var MyClass = class {} // class expression
কোডটি কার্যকর করে যখন প্রকাশের সময়টিতে অভিব্যক্তিটি মূল্যায়ন করা হয়, যখন একটি ঘোষণা আগেই কার্যকর করা হয়।
মিক্সিন তৈরি করতে শ্রেণীর এক্সপ্রেশন ব্যবহার করা
আপনি এটি একটি ফাংশন তৈরি করতে ব্যবহার করতে পারেন যা ক্রিয়াকলাপ কেবল তখনই ক্লাস তৈরি করে যখন ফাংশনটি বলা হয়:
function createClassExtending(superclass) {
return class AwesomeClass extends superclass {
// you class body here as usual
}
}
এটি সম্পর্কে দুর্দান্ত জিনিসটি হ'ল আপনি পুরো ক্লাসটি আগেই সংজ্ঞায়িত করতে পারেন এবং কেবলমাত্র ফাংশনটি কল করার পরে এটি কোন শ্রেণীর বাড়ানো উচিত তা নিয়ে সিদ্ধান্ত নিতে পারেন:
class A {}
class B {}
var ExtendingA = createClassExtending(A)
var ExtendingB = createClassExtending(B)
আপনি যদি একাধিক ক্লাস একসাথে মিশতে চান, কারণ ES6 ক্লাসগুলি কেবল একক উত্তরাধিকারকে সমর্থন করে, আপনার ক্লাসগুলির একটি শৃঙ্খলা তৈরি করা দরকার যাতে আপনি একসাথে মিশতে চান এমন সমস্ত ক্লাস থাকে। সুতরাং আসুন আমরা বলি যে আপনি একটি শ্রেণি সি তৈরি করতে চান যা A এবং B উভয়ই প্রসারিত, আপনি এটি করতে পারেন:
class A {}
class B extends A {}
class C extends B {} // C extends both A and B
এটির সাথে সমস্যাটি হ'ল এটি খুব অচল। আপনি যদি পরে সিদ্ধান্ত নেন যে আপনি একটি ক্লাস ডি বানাতে চান যা বি প্রসারিত হবে তবে A নয়, আপনার সমস্যা আছে।
তবে ক্লাসগুলি এক্সপ্রেশন হতে পারে এই বিষয়টি ব্যবহার করে কিছু স্মার্ট কৌতূহলের সাহায্যে আপনি এ এবং বি তৈরি করে ক্লাস হিসাবে সরাসরি নয়, শ্রেণি কারখানা হিসাবে (ব্রেভিটির জন্য তীর ফাংশন ব্যবহার করে) সমাধান করতে পারেন:
class Base {} // some base class to keep the arrow functions simple
var A = (superclass) => class A extends superclass
var B = (superclass) => class B extends superclass
var C = B(A(Base))
var D = B(Base)
লক্ষ করুন যে আমরা কীভাবে কেবল শেষ মুহুর্তে সিদ্ধান্ত নিই যে কোন শ্রেণিক্রমকে শ্রেণিবিন্যাসে অন্তর্ভুক্ত করা উচিত।