টাইপস্ক্রিপ্টে DOM ম্যানিপুলেশন/ইভেন্ট হ্যান্ডলিংয়ের জন্য ব্যবহৃত ক্লাসগুলি
এই প্রবন্ধে, আমরা টাইপস্ক্রিপ্টে DOM ম্যানিপুলেশন/ইভেন্ট হ্যান্ডলিংয়ের জন্য ব্যবহৃত ক্লাসগুলির ব্যাখ্যা করব।
আপনি কোডের উদাহরণের মাধ্যমে Document
ক্লাস, Element
এবং NodeList
ক্লাস এবং বিভিন্ন ইভেন্ট-সম্পর্কিত ক্লাস সম্পর্কে শিখতে পারবেন।
YouTube Video
টাইপস্ক্রিপ্টে DOM ম্যানিপুলেশন/ইভেন্ট হ্যান্ডলিংয়ের জন্য ব্যবহৃত ক্লাসগুলি
টাইপস্ক্রিপ্টে DOM ম্যানিপুলেশন এবং ইভেন্ট হ্যান্ডলিংয়ের জন্য প্রধানত Document Object Model
(DOM) ইন্টারফেসগুলি ব্যবহৃত হয়। DOM ম্যানিপুলেশন এবং ইভেন্ট হ্যান্ডলিংয়ে সাধারণ জাভাস্ক্রিপ্ট ক্লাস এবং ইন্টারফেস ব্যবহার করা হয়, তবে টাইপস্ক্রিপ্টে এগুলিতে টাইপ তথ্য যোগ করা হয়, যা আরও সুরক্ষিত অপারেশন সক্ষম করে।
নিম্নে DOM ম্যানিপুলেশন এবং ইভেন্ট হ্যান্ডলিংয়ে সাধারণত ব্যবহৃত ক্লাস এবং ইন্টারফেসগুলি বর্ণনা করা হয়েছে।
DOM ম্যানিপুলেশনে ব্যবহৃত প্রধান ক্লাস/ইন্টারফেসগুলি
Document
Document
হল HTML বা XML ডকুমেন্টগুলিকে উপস্থাপনকারী একটি অবজেক্ট। DOM ট্রিতে অ্যাক্সেস করতে বা উপাদানগুলি সন্ধান করতে ব্যবহৃত হয়।
কোড উদাহরণ
1// Get the element using getElementById
2const element = document.getElementById('myElement') as HTMLDivElement | null;
3if (element) {
4 element.textContent = 'Hello, TypeScript!';
5}
6
7// querySelector can specify a generic type for more precise typing
8const button = document.querySelector<HTMLButtonElement>('#myButton');
9button?.addEventListener('click', () => {
10 console.log('Button clicked!');
11
12 // Create a new element dynamically
13 const newDiv = document.createElement('div');
14 newDiv.textContent = 'New element created!';
15 document.body.appendChild(newDiv);
16});
প্রধান পদ্ধতিসমূহ
getElementById
নির্দিষ্টid
বৈশিষ্ট্য সহ একটি উপাদান পুনরুদ্ধার করে।querySelector
একটি CSS সিলেক্টর ব্যবহার করে একটি উপাদান পুনরুদ্ধার করে।createElement
একটি নতুন HTML উপাদান তৈরি করে।
কোড ব্যাখ্যা
getElementById
ব্যবহার করে এই কোডটি একটিid
অ্যাট্রিবিউটসহ এলিমেন্ট নিয়ে আসে এবং তার টেক্সট পরিবর্তন করে। এটিquerySelector
ব্যবহার করে একটি বাটন এলিমেন্টও নিয়ে আসে এবং তাতে একটি ক্লিক ইভেন্ট লিসেনার যোগ করে। ক্লিক করলে এটিcreateElement
ব্যবহার করে একটি নতুনdiv
এলিমেন্ট তৈরি করে এবং সেটিকে মূল কনটেন্টে যোগ করে। DOM অপারেশনের সময় টাইপ সুরক্ষার জন্য জেনেরিকস এবং টাইপ অ্যাসারশন ব্যবহার করা হয়েছে।
Element
Element
হল একটি ইন্টারফেস যা DOM-এ পৃথক HTML উপাদানগুলিকে উপস্থাপন করে। এটি DOM ম্যানিপুলেশনের সময় সবচেয়ে সাধারণভাবে ব্যবহৃত হয়।
কোড উদাহরণ
1// Use querySelector to manipulate element properties
2const divElement = document.querySelector<HTMLDivElement>('.myClass');
3if (divElement) {
4 // Set innerHTML
5 divElement.innerHTML = '<strong>Hello with innerHTML!</strong>';
6
7 // Set textContent
8 divElement.textContent = 'Hello with textContent!';
9
10 // Add a new class
11 divElement.classList.add('newClass');
12
13 // Set a custom attribute
14 divElement.setAttribute('data-role', 'content');
15}
প্রধান বৈশিষ্ট্য এবং মেথডগুলি
innerHTML
প্রপার্টি আপনাকে কোনো উপাদানের HTML বিষয়বস্তু নির্ধারণ বা পাওয়ার সুযোগ দেয়।textContent
প্রপার্টি আপনাকে কোনো উপাদানের টেক্সট বিষয়বস্তু নির্ধারণ বা পাওয়ার সুযোগ দেয়।classList
একটি প্রপার্টি যা ক্লাসসমূহ পরিচালনা করতে ব্যবহৃত হয়, এটি আপনাকে ক্লাস যোগ, অপসারণ এবং টগল করতে দেয়।setAttribute
মেথড একটি উপাদানে কোনো অ্যাট্রিবিউট নির্ধারণ করে।
কোড ব্যাখ্যা
- এই কোডটি
querySelector
-এর মাধ্যমে প্রাপ্ত এলিমেন্টগুলোর জন্যinnerHTML
ওtextContent
ব্যবহার করে কনটেন্ট সেট করার,classList
দিয়ে ক্লাস যোগ করার, এবংsetAttribute
-এর সাহায্যে কাস্টম অ্যাট্রিবিউট সেট করার উদাহরণ দেখায়। জেনেরিকস ব্যবহার করে অপারেশনগুলো টাইপ-নিরাপদভাবে সম্পন্ন করা হয়েছে।
NodeList
এবং HTMLCollection
NodeList
এবং HTMLCollection
হল এমন সংকলন যা একাধিক DOM উপাদান ধারণ করে। যেমন, querySelectorAll
একটি NodeList
ফেরত দেয়, এবং getElementsByClassName
একটি HTMLCollection
ফেরত দেয়।
কোড উদাহরণ
1// NodeList supports forEach iteration
2const divs: NodeListOf<HTMLDivElement> = document.querySelectorAll('div');
3divs.forEach(div => {
4 div.textContent = 'Updated!';
5});
6
7// HTMLCollection is not directly iterable, convert it to an array
8const spans: HTMLCollectionOf<HTMLSpanElement> =
9 document.getElementsByClassName('span-item') as HTMLCollectionOf<HTMLSpanElement>;
10Array.from(spans).forEach(span => {
11 span.textContent = 'Changed!';
12});
- এই কোডটি
forEach
দিয়ে সরাসরিNodeList
পরিচালনা এবংHTMLCollection
কে পুনরাবৃত্তির জন্য অ্যারে-তে রূপান্তর করার একটি উদাহরণ।
ইভেন্ট হ্যান্ডলিংয়ে ব্যবহৃত প্রধান ক্লাস/ইন্টারফেসগুলি
Event
Event
হল DOM-এ সংঘটিত হওয়া সমস্ত ইভেন্টের জন্য বেস ক্লাস। ক্লিক, ইনপুট এবং পেজ লোডের মতো বিভিন্ন ইভেন্ট Event
ক্লাসকে প্রসারিত করে।
কোড উদাহরণ
1const form = document.querySelector<HTMLFormElement>('#myForm');
2form?.addEventListener('submit', (event: Event) => {
3 // target refers to the element that triggered the event (the form)
4 const target = event.target as HTMLFormElement;
5
6 // type shows the kind of event, e.g., "submit"
7 console.log(`Event type: ${event.type}`);
8
9 // preventDefault disables the default form submission
10 event.preventDefault();
11 console.log('Form submission prevented.');
12});
প্রধান বৈশিষ্ট্য এবং মেথডগুলি
target
প্রপার্টি বোঝায় যে উপাদানটিতে (EventTarget
) ইভেন্টটি ঘটেছে।type
বোঝায় কোন ধরণের ইভেন্ট ঘটেছে, যেমনclick
বাinput
।preventDefault
মেথড ইভেন্টের ডিফল্ট ক্রিয়া বাতিল করে।
কোড ব্যাখ্যা
- এই কোডটি দেখায় কিভাবে একটি ফর্মে
submit
ইভেন্ট লিসেনার যোগ করতে হয়।target
হলো সেই ফর্ম এলিমেন্ট যেখানে ইভেন্টটি ঘটেছে, এবংtype
হলো ইভেন্টের ধরন (এই ক্ষেত্রে,"submit"
)।preventDefault
মেথড কল করে আপনি ফর্ম সাবমিশনের ডিফল্ট আচরণ যেমন পেজ নেভিগেশন বা রিলোড বন্ধ করতে পারেন। এর পরিবর্তে এখানে কাস্টম প্রসেস—লগিং আউটপুট—সম্পাদিত হয়।
MouseEvent
MouseEvent
মাউস অপারেশন সম্পর্কিত ইভেন্টগুলো উপস্থাপন করে। click
এবং mousemove
এর মতো মাউস ইভেন্টগুলোতে এই ক্লাস ব্যবহার করা হয়।
কোড উদাহরণ
1const div = document.getElementById('clickArea');
2if (div) {
3 div.addEventListener('click', (event: MouseEvent) => {
4 console.log(`Clicked at: (${event.clientX}, ${event.clientY})`);
5 });
6}
- এই কোডটি মাউসের স্থানাঙ্ক লগ করতে
MouseEvent
ব্যবহারের একটি উদাহরণ।
মুখ্য বৈশিষ্ট্যসমূহ
clientX
হলো পৃষ্ঠার মধ্যে মাউস পয়েন্টারের X স্থানাঙ্ক।clientY
হলো পৃষ্ঠার মধ্যে মাউস পয়েন্টারের Y স্থানাঙ্ক।button
নির্দেশ করে কোন মাউস বোতাম চাপা হয়েছে।0
হলো বাঁদিকের বোতাম,1
মাঝের বোতাম, আর2
ডানদিকের বোতাম।
KeyboardEvent
KeyboardEvent
কীবোর্ড কার্যক্রম সম্পর্কিত ইভেন্টগুলো উপস্থাপন করে। keydown
এবং keyup
ইভেন্টগুলি এই শ্রেণীতে অন্তর্ভুক্ত।
কোড উদাহরণ
1document.addEventListener('keydown', (event: KeyboardEvent) => {
2 // Show the key name (e.g., "Enter", "a")
3 console.log(`Key pressed: ${event.key}`);
4
5 // Show the physical key code (e.g., "Enter", "KeyA")
6 console.log(`Key code: ${event.code}`);
7
8 // Check if Alt/Ctrl/Shift key was pressed
9 console.log(`Alt pressed: ${event.altKey}`);
10 console.log(`Ctrl pressed: ${event.ctrlKey}`);
11 console.log(`Shift pressed: ${event.shiftKey}`);
12
13 if (event.key === 'Enter') {
14 console.log('Enter was pressed');
15 }
16});
মুখ্য বৈশিষ্ট্যসমূহ
key
হলো চাপা চাবির নাম, যেমনEnter
বাa
।code
হলো কীবোর্ডের কোনো চাবি-সংক্রান্ত কোড।altKey
,ctrlKey
, এবংshiftKey
হলো এমন বৈশিষ্ট্য, যা নির্দেশ করেAlt
,Ctrl
, বাShift
চাবি চাপা হয়েছে কিনা।
কোড ব্যাখ্যা
- এই কোডটি
KeyboardEvent
ব্যবহার করে চাপা কী-এর নাম (key
), সংশ্লিষ্ট কী কোড (code
), এবং মোডিফায়ার কী (altKey
,ctrlKey
,shiftKey
) চাপা হয়েছে কিনা তা লগ করে। এছড়াও,Enter
কী চাপা হলে এটি বিশেষ একটি কাজ সম্পাদন করে।
FocusEvent
FocusEvent
ফোকাস অর্জন বা হারানোর ইভেন্টগুলির সাথে সম্পর্কিত। focus
এবং blur
ইভেন্টগুলি এই শ্রেণীতে অন্তর্ভুক্ত।
কোড উদাহরণ
1const inputElement = document.getElementById('myInput');
2if (inputElement) {
3 inputElement.addEventListener('focus', (event: FocusEvent) => {
4 console.log('Input focused');
5 });
6
7 inputElement.addEventListener('blur', (event: FocusEvent) => {
8 console.log('Input lost focus');
9 });
10}
- এই কোডটি কোনো ইনপুট ফিল্ডে ফোকাস এলে বা হারালে তা নির্ণয় ও লগ করতে
FocusEvent
ব্যবহারের একটি উদাহরণ।
টাইপস্ক্রিপ্টে টাইপ করা
টাইপস্ক্রিপ্ট ব্যবহার করার সময়, DOM পরিচালনা ও ইভেন্ট পরিচালনার টাইপ চেক উন্নত হয়। নীচে টাইপস্ক্রিপ্টে টাইপ-নিরাপদ DOM পরিচালনা ও ইভেন্ট পরিচালনার উদাহরণ দেওয়া হয়েছে।
টাইপ-কৃত ইভেন্ট শ্রোতারা
ইভেন্ট শ্রোতা যোগ করার সময়, ইভেন্টের ধরন নির্দিষ্ট করলে টাইপ চেকিং করে এবং ভুল সম্পত্তিগুলিতে প্রবেশ প্রতিরোধ করে।
1const input = document.querySelector<HTMLInputElement>('#myInput');
2// Event listener with explicit type annotation for safety
3input?.addEventListener('input', (event: Event) => {
4 // event.target is EventTarget, so it needs to be cast to the correct type
5 const target = event.target as HTMLInputElement;
6 console.log(`Current value: ${target.value}`);
7});
- এই কোডটি টাইপ করা ইভেন্ট লিসেনার ব্যবহার করে ইনপুট ইভেন্ট পরিচালনা এবং ইনপুট ফিল্ডের বর্তমান মান নিরাপদভাবে সংগ্রহ ও লগ করার একটি উদাহরণ।
সাধারণ ইভেন্ট পরিচালনা
টাইপস্ক্রিপ্টে জেনেরিক্স ব্যবহার করে, আপনি বিভিন্ন ধরনের ইভেন্টকে সমর্থনকারী সাধারণ ইভেন্ট পরিচালনা করতে পারেন।
1// Generic event handler function
2function handleEvent<T extends Event>(event: T) {
3 console.log(`Event type: ${event.type}`);
4 if (event.target instanceof HTMLElement) {
5 console.log(`Target element: ${event.target.tagName}`);
6 }
7}
8
9const input = document.querySelector<HTMLInputElement>('#myInput');
10input?.addEventListener('input', handleEvent);
- এই কোডটি ইভেন্ট টাইপ এবং লক্ষ্য উপাদানের ট্যাগ নাম লগ করতে জেনেরিক ব্যবহার করে একটি সাধারণ ইভেন্ট হ্যান্ডলারের উদাহরণ।
সারসংক্ষেপ
টাইপস্ক্রিপ্টে, DOM পরিচালনা ও ইভেন্ট পরিচালনার সময় স্ট্যান্ডার্ড DOM API-তে টাইপ প্রয়োগ করা হয়, যা কোডের নিরাপত্তা ও পাঠযোগ্যতা বৃদ্ধি করে। Document
এবং Element
এর মতো ক্লাস এবং Event
, MouseEvent
এবং KeyboardEvent
এর মতো ইভেন্ট সম্পর্কিত ক্লাস ব্যবহার করে টাইপ-নিরাপদ উন্নয়ন সম্ভব। অতিরিক্তভাবে, querySelector<T>()
বা HTMLCollectionOf<T>
ব্যবহার করলে টাইপ-নিরাপদ DOM পরিচালনা করা যায়।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।