Vivasoft-logo

1.2 টাইপস্ক্রিপ্ট কি?

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

আমাদের দুই ধরণের প্রোগ্রামিং ল্যাংগুয়েজ আছে: স্ট্যাটিক টাইপড ল্যাঙ্গুয়েজ এবং ডায়নামিক টাইপড ল্যাঙ্গুয়েজ। স্ট্যাটিক টাইপড ল্যাঙ্গুয়েজ যেমন C++, C# এবং জাভা, যাদের ভ্যারিয়েবলের টাইপ  আমরা কম্পাইল সময়ে বা কোড লেখার সময়ই জানি । উদাহরণস্বরূপ, আমরা একটি ইন্টিজার টাইপের ভেরিয়েবল ডিক্লেয়ার করলাম  এবং এই ভেরিয়েবল কেবল ইন্টিজার মানই  ধারণ করতে পারবে, অন্য কিছু নয়। সুতরাং, আমরা এই ভ্যারিয়েবলটিকে  স্ট্রিং বা অন্য ধরণের অবজেক্টে সেট করতে পারবো না ।

				
					int number = 10;
number = ‘a’;

				
			

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

				
					Let number = 10; 
number = ‘a’;
Math.round(number);

				
			

তখন আমাদের অ্যাপ্লিকেশনটি হয়ত মিসবিহেভ করবে, এমনকি  ক্র্যাশও  করতে পারে। আরো একটি সমস্যা হলো আমরা এই সমস্যাগুলি আমাদের অ্যাপ্লিকেশন বা ইউনিট টেস্ট রান না করা পর্যন্ত জানতেও  পারব না । সুতরাং, আমাদেরকে এই বাগগুলি ধরার জন্য প্রতিটি ফাংশন টেস্ট করতে হবে। সত্যি বলতে  টাইপস্ক্রিপ্টের সাহায্যে এই সমস্যাগুলোর সহজেই সমাধান করা যায়।

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

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

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