টাইপস্ক্রিপ্টে ফর লুপের সেরা চর্চাগুলি

টাইপস্ক্রিপ্টে ফর লুপের সেরা চর্চাগুলি

এই আর্টিকেলটি টাইপস্ক্রিপ্টে ফর লুপ ব্যবহার করার সেরা চর্চাগুলি ব্যাখ্যা করে।

YouTube Video

টাইপস্ক্রিপ্টে ফর লুপের সেরা চর্চাগুলি

for বিবৃতিগুলি পুনরাবৃত্তিমূলক কার্যক্রম সম্পাদনের জন্য একটি মৌলিক এবং শক্তিশালী সিনট্যাক্স। TypeScript-এ, টাইপ নিরাপত্তার সুবিধা নেওয়া এবং পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা মাথায় রেখে কোড লেখার দ্বারা কম ত্রুটিযুক্ত কার্যকর কোড লেখা সম্ভব।

সঠিক লুপের ধরন নির্বাচন করা

টাইপস্ক্রিপ্ট বিভিন্ন লুপ কনস্ট্রাক্ট অফার করে, যেগুলো বিভিন্ন ব্যবহারের ক্ষেত্রে উপযুক্ত। উপযুক্ত লুপ নির্বাচন করা কোডের স্পষ্টতা এবং পারফরম্যান্সের জন্য অত্যন্ত গুরুত্বপূর্ণ।

স্ট্যান্ডার্ড for লুপ

1for (let i = 0; i < 10; i++) {
2    console.log(i);
3}

যখন আপনাকে ইটারেশন ইনডেক্সে নিখুঁত নিয়ন্ত্রণ রাখতে হয়, তখন স্ট্যান্ডার্ড for লুপ আদর্শ।

সেরা অনুশীলনসমূহ
1const maxIterations = 10;
2for (let i = 0; i < maxIterations; i++) {
3    console.log(i);
4}

for বিবৃতি লেখার সময়, নিচের বিষয়গুলি মনে রাখা আপনাকে আরও নিরাপদ এবং বেশি পাঠযোগ্য কোড লেখায় সাহায্য করতে পারে।

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

for...of লুপ

1const array = [1, 2, 3];
2for (let value of array) {
3    console.log(value);
4}

for...of লুপ অ্যারেগুলি এবং স্ট্রিংগুলির মতো পুনরাবৃত্তিযোগ্য অবজেক্টগুলোর উপর পুনরাবৃত্তি করার জন্য উপযুক্ত।

সেরা অনুশীলনসমূহ
1const array = [1, 2, 3];
2for (const value of array) {
3    console.log(value);
4}

for...of লুপ লেখা হলে, নিম্নলিখিত বিষয়গুলিতে মনোযোগ দেওয়া আপনাকে আরও নিরাপদ কোড লেখার জন্য সাহায্য করতে পারে।

  • লুপ ভেরিয়েবলের জন্য const ব্যবহার করুন
    • যদি লুপের মধ্যে মান পরিবর্তন না করা হয়, তাহলে const ব্যবহার দুর্ঘটনাক্রমে পুনরায় নিয়োগ প্রতিরোধে সাহায্য করে।

for...in লুপ

1const obj = { a: 1, b: 2, c: 3 };
2for (const key in obj) {
3    console.log(`${key}: ${obj[key]}`);
4}

for...in লুপটি একটি অবজেক্টের গণনাযোগ্য প্রপার্টিগুলোর উপর পুনরাবৃত্তি করে।

সেরা অনুশীলনসমূহ
1const obj = { a: 1, b: 2, c: 3 };
2for (const key in obj) {
3    if (obj.hasOwnProperty(key)) {
4        console.log(`${key}: ${obj[key]}`);
5    }
6}

for...in লুপ লিখতে গেলে নিম্নলিখিত দিকগুলি বিবেচনা করতে পারেন।

  • গুণাগুণ ছেঁকে নিন
    • যদি আপনাকে উত্তরাধিকারসূত্রে প্রাপ্ত প্রোপার্টি এড়াতে হয়, তবে আপনি hasOwnProperty ব্যবহার করতে পারেন।
  • অ্যারে-এর সাথে for...in ব্যবহার করবেন না। অ্যারেগুলোর সাথে for...in ব্যবহার এড়িয়ে চলুন। এটি সমস্ত গণনাযোগ্য গুণাগুণের উপরে পুনরাবৃত্ত হতে পারে, এমনকি যা অ্যারের সূচক নয় সেগুলোরও।

forEach মেথড

1const array = [1, 2, 3];
2array.forEach((value, index) => {
3    console.log(`Index: ${index}, Value: ${value}`);
4});

অ্যারে উপর পুনরাবৃত্তি করার সময়, forEach সংক্ষিপ্ত এবং সূচক ব্যবস্থাপনার প্রয়োজনীয়তা দূর করে।

সেরা অনুশীলনসমূহ

forEach পদ্ধতি ব্যবহার করার সময় নিম্নলিখিত দিকগুলি বিবেচনা করতে পারেন।

  • অ্যারো ফাংশন ব্যবহার করুন
    • পঠনযোগ্যতা বৃদ্ধি করতে সহজ অ্যারো ফাংশন ব্যবহার করুন।
  • বাধা এড়িয়ে চলুন
    • forEach break বা continue সমর্থন করে না। প্রয়োজন হলে for...of বা for লুপ ব্যবহার করুন:।

টাইপ সুরক্ষা এবং ত্রুটি প্রতিরোধ

টাইপস্ক্রিপ্টের টাইপ সিস্টেম ব্যবহার করে পুনরাবৃত্তি চলাকালে রানটাইম ত্রুটি প্রতিরোধ করতে পারেন:।

লুপ ভেরিয়েবলগুলির জন্য কড়া টাইপ নির্ধারণ করুন

1const items = [1, 2, 3];
2items.forEach(item => {
3    console.log(item * 2);
4});
1const items: number[] = [1, 2, 3];
2items.forEach((item: number) => {
3    console.log(item * 2);
4});

লুপ ভ্যারিয়েবলের জন্য স্পষ্টভাবে টাইপ নির্ধারণ করলে, আপনি দ্রুত টাইপের অসামঞ্জস্য শনাক্ত করতে পারবেন।

অন্তর্নিহিত any এড়িয়ে চলুন

1{
2  "compilerOptions": {
3    "noImplicitAny": true
4  }
5}

tsconfig.jsonnoImplicitAny সক্ষম করে, আপনি সুস্পষ্ট টাইপ ছাড়া ভেরিয়েবলগুলিকে প্রকারহীনভাবে any টাইপ বরাদ্দ করা থেকে বাধা দিতে পারেন।

প্রয়োজন হলে ReadonlyArray ব্যবহার করুন

1const numbers: ReadonlyArray<number> = [1, 2, 3];
2for (const value of numbers) {
3    console.log(value);
4}

যদি আপনি এমন একটি অ্যারে ইটারেট করেন যেটি পরিবর্তিত হওয়া উচিত নয়, তবে আপনি ReadonlyArray ব্যবহার করতে পারেন।

পারফরম্যান্স বিবেচনা

বড় ডেটাসেট প্রসেসিং বা ঘন ঘন সম্পাদিত লুপের জন্য দক্ষতা গুরুত্বপূর্ণ:।

লুপ প্রয়োগের সেরা পদ্ধতিটি নির্বাচন করুন।

লুপ প্রয়োগ করার বিভিন্ন উপায় রয়েছে, প্রতিটির মধ্যে পাঠযোগ্যতা এবং কার্যকারিতার পার্থক্য থাকে।

 1// Prepare input data (an array from 1 to 1000000)
 2const input: number[] = Array.from({ length: 1000000 }, (_, i) => i + 1);
 3
 4// --- for ---
 5console.time('for loop');
 6const squaresFor: number[] = [];
 7for (let i = 0; i < input.length; i++) {
 8    squaresFor.push(input[i] * input[i]);
 9}
10console.timeEnd('for loop');
11
12// --- while ---
13console.time('while loop');
14const squaresWhile: number[] = [];
15let i: number = 0;
16while (i < input.length) {
17    squaresWhile.push(input[i] * input[i]);
18    i++;
19}
20console.timeEnd('while loop');
21
22// --- for-of ---
23console.time('for-of loop');
24const squaresForOf: number[] = [];
25for (const num of input) {
26    squaresForOf.push(num * num);
27}
28console.timeEnd('for-of loop');
29
30// --- forEach ---
31console.time('forEach loop');
32const squaresForEach: number[] = [];
33input.forEach((num: number): void => {
34    squaresForEach.push(num * num);
35});
36console.timeEnd('forEach loop');
37
38// --- map ---
39console.time('map');
40const squaresMap: number[] = input.map((value: number): number => value * value);
41console.timeEnd('map');

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

নেটিভ ইটারেশন পদ্ধতি ব্যবহার করুন

 1const squares = [1, 2, 3].map(value => value * value);
 2console.log(squares);
 3
 4const numbers = [1, 2, 3, 4, 5, 6];
 5const evenNumbers = numbers.filter(value => value % 2 === 0);
 6console.log(evenNumbers); // [2, 4, 6]
 7
 8const squaredEvens = numbers
 9    .filter(value => value % 2 === 0) // Keep only even numbers
10    .map(value => value * value);     // Square the remaining values
11
12console.log(squaredEvens); // [4, 16, 36]

map এবং filter এর মতো পদ্ধতিগুলি কিছু ক্ষেত্রে বেশি পাঠযোগ্য হতে পারে।

পাঠযোগ্যতার জন্য for...of পছন্দ করুন

কর্মক্ষমতা কেবল কয়েকটি সীমিত ক্ষেত্রে অগ্রাধিকার পাওয়া উচিত; সাধারণভাবে, পাঠযোগ্য কোড লেখা আরও গুরুত্বপূর্ণ। উদাহরণস্বরূপ, for...of অগ্রাধিকার দেওয়া হলে পাঠযোগ্যতা উন্নত হতে পারে।

1const fruits = ["apple", "banana", "cherry"];
2
3for (let i = 0; i < fruits.length; i++) {
4    console.log(`${i}: ${fruits[i]}`);
5}
সেরা অনুশীলনসমূহ
1const fruits = ["apple", "banana", "cherry"];
2
3for (const [index, fruit] of fruits.entries()) {
4    console.log(`${index}: ${fruit}`);
5}

for...of লুপগুলিকে অগ্রাধিকার দেওয়া হলে, আপনি আরও পাঠযোগ্য এবং দুর্ভুলতাপ্রতিরোধী কোড লিখতে সক্ষম হবেন। যেমন এই উদাহরণে দেখানো হয়েছে, যদি আপনাকে অ্যারের ইন্ডেক্সও প্রয়োজন হয়, তাহলে entries() এর সাথে for...of এর সংমিশ্রণ কার্যকর।

সাধারণ সমস্যাগুলি এড়ানো

পুনরাবৃত্তির সময় সংগ্রহগুলি সংশোধন করা

1const array = [1, 2, 3];
2for (const value of [...array]) {
3    if (value === 2) {
4        array.push(4); // Avoid this!
5    }
6}
7console.log(array);

পুনরাবৃত্তির সময় কোনো অ্যারে সংশোধন করা অপ্রত্যাশিত আচরণ ঘটাতে পারে:। প্রয়োজন হলে একটি কপি ব্যবহার করুন।

এজ কেসগুলো বিবেচনা করুন

1const array: number[] = [];
2for (const value of array) {
3    console.log(value); // No output, but no errors
4}

এই কোডটি ঠিকঠাক কাজ করে, তবে যদি আপনাকে খালি অ্যারে পরিচালনা করতে হয়, তাহলে আপনি এটি নিচের মতো উন্নত করতে পারেন।

1const array: number[] = [];
2if (array.length === 0) {
3    console.log("The array is empty.");
4} else {
5    for (const value of array) {
6        console.log(value);
7    }
8}

এজ কেস বিবেচনা করলে পরবর্তী কোডে ত্রুটি প্রতিরোধে সহায়তা করতে পারে।

উপসংহার

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

আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।

YouTube Video