TypeScript Tutorial: TypeScript Syntax and Types

 TypeScript Syntax

TypeScript Tutorial TypeScript Syntax

প্রিয় ডেভেলপারস! আসসালামু আলাইকুম, আশা করি ভালো আছেন আজকের ব্লগে TypeScript এর Syntax সম্পর্কে বিস্তারিত টিউটোরিয়াল আপনাদের মাঝে শেয়ার করবো, আশা করি আপনারা উপকৃত হবেন তাহলে শুরু করা যাক

 

JavaScript যে সকল Syntax বা ডাটা টাইপ ব্যবহার করে থাকি, তেমনি TypeScript একই ডাটা টাইপ ব্যবহার করতে পারি তবে TypeScript এছাড়াও কিছু অতিরিক্ত ডাটা টাইপ, ইনটারফেস, ক্লাসসহ আরও কিছু সুযোগ সুবিধা প্রদান করে থাকে

 

TypeScript Syntax লেখার পূর্বে একটি উদাহরণ নিয়ে আলোচনা করা যাক


[

const siteName: string = 'Notesaid24';

]

 

const: আমরা যে কোন Variable কিওয়ার্ড এর মাধ্যমে লিখতে পারি এমন কিছু কিওয়ার্ড হলো যেমন – var, let এবং const উপরোক্ত উদাহরণে আমরা ‘const’ কিওয়ার্ড ব্যবহার করা হয়েছে

siteName: string – এখানে ‘siteName’ Variable নাম হিসেবে ব্যবহার করা হয়েছে এবং Variable নামে পর (: string) এর মূল উদ্দেশ্য হলো ভ্যারিয়বল Value এর ডাটা টাইপ অনুযায়ী “string, number, array, boolean, null, undefined, object, void, tuple, enum, any, never, union” ইত্যাদি বসে

 

নোটঃ এই type লেখার জন্য (: type) এই চিহ্নটি Variable, Parameter এবং Object Properties নামের পরে ব্যবহার করতে হয়। আর এই চিহ্ন (: type) কে Type Annotation বলে।

 

নিম্নে ডাটা টাইপগুলোর সম্পর্কে “string, number, array, boolean, null, undefined, object, void, tuple, enum, any, never, union” উদাহরণসহ বিস্তারিত আলোচনা করা হলো


 

TypeScript String লেখার নিয়ম

string এর মধ্যে যে কোন রকমের ডাটা রাখা যায়, যেমনলেটার, নাম্বার এবং সিম্বল ইত্যাদি রাখা যায় তবে string লেখার জন্য Single Quote (‘’) অথবা Double Quote (“”) এর মধ্যে লিখতে হয় যেমন

[

const singleQuote: string = 'This is a single quote string.';

const doubleQuote: string = "This is a double quote string.";

const lettterString: string = "Notesaid24";

const numberString: string = "24";

]

 


TypeScript Number লেখার নিয়ম

number এর মধ্যে integer (পূর্ণসংখ্যা) এবং floating-point (দশমিক সংখ্যা) রাখা যায় যেমন

[

let intNumber: number = 13; // integer number

let floatNumber: number = 13.5; // floating-point number

]

 


TypeScript Array লেখার নিয়ম 

TypeScript Array লেখার সময় Type Annotations (:) এর পরে Array তে রাখা ডাটা টাইপের অনুযায়ী Data Type বসবে এবং এর পরে Square Bracket (string: []) দিতে হয় যেমন

[

let numberArray: number[] = [1, 2, 3, 4, 5];

let stringArray: string[] = ["Notesaid24", "TypeScript"];

let numberArray: Array<number> = [1, 2, 3, 4, 5];

let stringArray: Array<string> = ["Notesaid24", "TypeScript"];

]

 


TypeScript Object লেখার নিয়ম

TypeScript Object সাধারণভাবে লিখা যায়, কিন্তু Object এ বিভিন্ন রকম ডাটা টাইপ নিয়ে কাজ করতে হয় তার জন্য TypeScript এ বিল্ট-ইন টাইপ লেখার জন্য “types এবং interface” রয়েছে যার মাধ্যমে প্রথমে Object এর মধ্যে প্রত্যেকটি Value এর ডাটা টাইপ key এর মধ্যে ডিফাইন করতে হয় তারপর ডিফাইনকৃত types / interface, Type Annotation এর মাধ্যমে ভ্যারিয়বলের পরে পাঠাতে হয় তবে types / interface ব্যবহার নিয়ে অন্য কোনো ব্লগে বিস্তারিত আলোচন করবো ইনশাআল্লাহ্ এখন আমরা Object এর কিছু উদাহরণ দেখে নিব

 

[

let myObj: object = { key: "value" }; // Using Common Types

]

 


TypeScript এর types এর মাধ্যমে Object লিখার নিয়ম

[

type PersonType = {

  firstName: string;

  lastName: string;

  age: number;

  email?: string; // Optional property

};

]

[

// Creating an object that adheres to the defined type

let person1: PersonType = {

  firstName: "Ahshan",

  lastName: "Habib",

  age: 10,

  email: "habib@gmail.com",

};

]


TypeScript এর interface এর মাধ্যমে Object লিখার নিয়ম


[

// Using interface to define the structure of an object

interface PersonInterface {

  firstName: string;

  lastName: string;

  age: number;

  email?: string; // Optional property

}


// Creating an object that adheres to the defined interface

let person2: PersonInterface = {

  firstName: "Ahshan",

  lastName: "Habib",

  age: 10,

  email: "habib@gmail.com",

};


]

 


TypeScript Functions লেখার নিয়ম

Typescript Regular Function এবং Arrow Function উভয় লেখা যায়, তবে Functions এর প্যারামিটার এবং Functions এর Return টাইপ Type Annotations এর মাধ্যমে ডিফাইন করা যায়

 

Regular Function with Type Annotations:

[

// Function that adds two numbers and returns the result

function addNumbers(a: number, b: number): number {

  return a + b;

}

console.log(addNumbers(5, 6));


// Function that concatenates two strings and returns the result

function concateStrings(str1: string, str2: string): string {

  return `${str1} ${str2}`;

}

console.log(concateStrings("Welcome To", "Notesaid24.com"));


// Or

const str1 = "Welcome To";

const str2 = "Notesaid24.com";

console.log(concateStrings(str1, str2));

]

 

Arrow Function with Type Annotations:

[

// Function that adds two numbers and returns the result

  const addNumbers = (a: number, b: number): number => {

    return a + b;

  };

  console.log(addNumbers(5, 6));


  // Function that concatenates two strings and returns the result

  const concateStrings = (str1: string, str2: string): string => {

    return `${str1} ${str2}`;

  };

  console.log(concateStrings("Welcome To", "Notesaid24.com"));


  // Or

  const str1 = "Welcome To";

  const str2 = "Notesaid24.com";

  console.log(concateStrings(str1, str2));

]

 


TypeScript Boolean লেখার নিয়ম 

সাধারণত Boolean “true এবং false” এই দুইটি ভ্যালু কে নির্দেশনা করে শর্ত সাপেক্ষে কাজের জন্য Boolean ব্যবহার করা হয়

[

const isDone: boolean = false;

const isExists: boolean = true;

]

 

 


TypeScript Tuple লেখার নিয়ম

TypeScript এর নিজস্ব বিল্ট-ইন Type “Tuple” সম্পর্কে কিছু গুরুত্বপূর্ণ কথা জেনে রাখি –

  • Tuple – Array এর মতো কাজ করে এবং Tuple এর length type আগে থেকে ডিফাইন করা যায়।
  • Tuple এর মাধ্যমে Array এর প্রত্যেকটি উপাদান কে Value হিসেবে ব্যবহার করা যায়।
  • Tuple এ ব্যবহারকৃত প্রত্যেকটি ইলিমেন্ট নিজস্ব Order মেনে চলে। Order এর বিপরীত হলে error দিয়ে দেয়।
  • Tuple এর মাধ্যমে একইসাথে বিভিন্ন ধরনের ডাটা টাইপ রাখা যায়।

 

👉 Tuple ডিফাইন করা – const myTuple : [string, number, boolean]

👉 Tuple ইনিশিয়ালাইজড – myTuple = [‘Notesaid24’, 0000, true]

👉 Tuple ইনিশিয়ালাইজড করার সময় প্রথমে string => ‘Notesaid24’, দ্বিতীয়তে number => 0000 এবং তৃতীয়তে boolean => true দেওয়া হয়েছে।


নোটঃ Tuple ইনিশিয়ালাইজড করার সময় কোন ভ্যালু যদি না দিতে চাই বা ততটা গুরুত্বপূর্ণ না এক্ষেত্রে স্কিপ করার জন্য Optional Tuple (?) ব্যবহার করতে হয়।

Optional Tuple (?) Tuple ডিফাইন করা – const myTuple : [string, number, boolean?]

Optional Tuple (?) Tuple ইনিশিয়ালাইজড – myTuple = [‘Notesaid24’, 0000]

Tuple ইনিশিয়ালাইজড করার সময় প্রথমে string => ‘Notesaid24’, দ্বিতীয়তে number => 0000 এবং তৃতীয়তে boolean => ভ্যালু দিলে হবে বা না দিলেও কোডে সমস্যা হবে না।

 


TypeScript enum লেখার নিয়ম

TypeScript enum এমন একটি ডাটা টাইপ যেখানে আমরা নির্দিষ্ট কিছু Constant নিয়ে কাজ করতে পারি (string, number) এবং এর অন্যতম বৈশিষ্ট্য হলো ডুফলিকেট ভ্যালু রাখা যায় না enum এর মধ্যমে কোডের Readability এবং Maintainability উন্নত করে

[

// Enum declaration

enum Color {

  Red,

  Green,

  Blue,

}

// Using the enum

let myColor: Color = Color.Green;

console.log("Selected color:", myColor); // Outputs: 1

]

 


TypeScript union টাইপ লেখার নিয়ম

TypeScript এর মাধ্যমে একই Variable এ বিভিন্ন ধরনের ডাটা ষ্টোর করা যায়। আর এই বিভিন্ন ধরনের ডাটা ষ্টোর করে রাখা কে Union Type বলে। Union টাইপ লেখার জন্য (|) এই সিন্ট্যাক্স ব্যবহার করতে হয় সিন্ট্যাক্স মনে রাখার সহজ উপায় হলো JavaScript এর Logical or Operator (||) TypeScript তা Union Type Operator এবং এর সিনট্যাক্স হলো – (|)

[

function retuurnStrAndNum(a: string | number) {

  if (typeof a === "string") {

    return a.length;

  } else {

    return a * a;

  }

}


const str = retuurnStrAndNum("notesaid24.com");

const num = retuurnStrAndNum(5);

console.log({ strValue: str, numValue: num });


]

  

সমস্যাঃ ধরেন কেউ আপনাকে বললো, এমন একটা ফাংশন তৈরি করতে হবে যে ফাংশনের কাজ হলো একই সাথে value হিসেবে string, number টাইপের প্যারামিটার নিবে এবং value যদি number হয় তাহলে তার square রিটার্ন করবে এবং value যদি string হয় তাহলে তার length রিটার্ন করবে এবং আর value যদি string বা number ব্যাতিত অন্য টাইপের হয় তাহলে error রিটার্ন করবে। উপরিল্লোখিত সমস্যাটি আমরা Union Type এর মাধ্যমে সমাধান করার চেষ্টা করবো –

[

const addValue = (a: string | number | any) => {

  if (typeof a === "number") {

    return a * a;

  } else if (typeof a === "string") {

    return a.length;

  } else {

    return `Parameters must be numbers or strings`;

  }

};

console.log(addValue("Notesaid24"));

console.log(addValue(5));

console.log(addValue(null));

]


কোড বিশ্লেষণঃ

এখানে, addValue ফাংশনের প্যারামিটার হিসাবে “a” নামে একটি প্যারামিটার নিয়েছে। তার ভ্যালু হিসেবে number এবং string নিয়েছি। কিন্তু সমস্যার মধ্যে উল্লেখ আছে যে, যদি number এবং string এর বাহিরে অন্য কোনো ডাটা ভ্যালু হিসেবে পাঠানো হয় তাহলে error দিবে। এখানে ইউজার কি ডাটা পাঠাবে তা আমাদের কাছে অজানা, তার জন্য number এবং string এর পরে any দেওয়া হয়েছে। ইউজার যদি number এবং string এর বাহিরে অন্য কোন ডাটা পাঠায় তাহলে তা any এর মাধ্যমে জানতে পারবো।

TypeScript এ অনেক রকম Type Checking Guard রয়েছে তার মধ্যে সবচেয়ে অধিক ব্যবহৃত Type Checking Guard হলো “typeof”আমরা typeof এর মাধ্যমে অতি সহজে ইউজার কোন রকম ডাটা Argument হিসেবে দিচ্ছে এবং ফাংশনে প্যারামিটার হিসেবে গ্রহণ করতেছে তা জানতে পারবো।

প্যারামিটার number বা string কিনা তা জানার জন্য if ব্লক ব্যবহার করা হয়েছে এবং Type Checking Guard এর “typeof” এর মাধ্যমে প্যারামিটার number হলে square রিটার্ন করতেছি এবং string হলে তার length রিটার্ন করতেছি এবং number বা string ছাড়া অন্য ডাটা টাইপ হলে error রিটার্ন করতেছি।

সর্বোপরি, বলা যায় যে Union Type, TypeScript এর অন্যতম Fetured, যা ব্যবহার করার মাধ্যমে অতি সহজে যে কোন জটিল সমস্যা সমাধান করতে পারবো। আশা করি এই সিরিজে সামনে এমন সমস্যা নিয়ে আরও উদাহরণ দেখবো এবং অনুশীলন করবো। মনে রাখবেন যে, অনুশীলনে একটি মানুষকে পারফেক্ট করে তোলে।

 


TypeScript any টাইপ লেখার নিয়ম

TypeScript Any Type এর মাধ্যমে যে কোনো ধরনের ডাটা ষ্টোর করা যায়, যার মাধ্যমে TypeScript কম্পাইলার Type-checking এর কার্যক্রম কে এড়িয়ে গিয়ে কোড রান করে। মাঝে মাঝে আমাদের প্রয়োজন অনুযায়ি, Third Party Resource বা API থেকে ডাটা ব্যবহার করতে হয়। কিন্তু Third Party Resource বা API প্রদানকৃত ডাটার টাইপ কি হবে তা আমাদের অজানা থাকে। এই জন্য প্রাথমিকভাবে কোডের এরর থেকে বাঁচার জন্য ভ্যারিয়েবলের ডাটা টাইপ Any ব্যবহার করে, এ যাবতীয় এরর থেকে বাঁচা যায়।

[

const thirdPartyData: any;

]

 


TypeScript never টাইপ লেখার নিয়ম

TypeScript never টাইপ সাধারণত ব্যবহার করা হয় এমন ভ্যালু যা কখনো ঘটবে না বা সংঘটিত হবে না। যখন আপনি একবারেই নিশ্চিত যে কোন কিছু ঘটবে না তখনই TypeScript এর never টাইপ ব্যবহার করা হয়।

[

function throwError(message: string): never {

  throw new Error(message);

}

]

 


TypeScript void লেখার নিয়ম

TypeScript void কিওয়ার্ড ফাংশনের সাথে ব্যবহার করা হয় যে সকল ফাংশন কোন রকম ভ্যালু return করে না, সকল ফাংশনের রিটার্ন টাইপ (:void) হয় অর্থাৎ, এমন এক ফাংশন যা কোন না কোন কাজ করে কিন্তু ফাংশনের কোনো ডাটা বা ভ্যালু রিটার্ণ করার প্রয়োজন নাই, সেক্ষেত্রে ফাংশনের রিটার্ণ টাইপ void ব্যবহার করতে হয়

[

function logMessage(message: string): void {

  console.log(message);

}

]

 


TypeScript null undefined লেখার নিয়ম

Null: null একটি primitive type ডাটা null মানে এটার কোন অস্তিত্ব নাই কিন্তু আবার undefined না TypeScript চাইলে আমরা অন্যান্য ডাটা টাইপের সাথে null ডাটা টাইপও রাখা যায়

[

const myNullValue: null = null;

const someValue: string | null = null;

]



Undefined: undefined একটি primitive type ডাটা যখন কোন ভ্যারিয়েবল Declare করা হয় কিন্তু ভ্যারিয়েবলের মধ্যে কোন Value এ্যাসাইন করা হয় না তখন তা বাই-ডিফল্ট undefined হয়ে থাকে

[

let myUndefinedValue: undefined = undefined;

let anotherValue: number | undefined;

]

 


TypeScript Class লেখার নিয়ম

TypeScript Class কিওয়ার্ড এর মাধ্যমে Class লিখা যায়, নিম্নে TypeScript class লিখার নিয়ম উল্লেখ করা হলো

[

class Person {

  firstName: string;

  lastName: string;

  age: number;


  constructor(firstName: string, lastName: string, age: number) {

    this.firstName = firstName;

    this.lastName = lastName;

    this.age = age;

  }


  getFullName(): string {

    return `${this.firstName} ${this.lastName}`;

  }

}

]

 


TypeScript Type Alias লেখার নিয়ম

সাধারণত টাইপ লেখার ক্ষেত্রে object types, union types এবং type annotations ব্যবহার করতে পারি। কিন্তু এই কাজগুলো TypeScript এর Type Aliases এর মাধ্যমেও করতে পারি। Type Aliases ব্যবহার করার জন্য প্রথমে type কিওয়ার্ড লিখতে হয়। তারপর কোডের কার্যক্রমের উপর ভিত্তি করে একটি Variable নাম দিতে হয় (Variable নাম অবশ্যই প্রথম অক্ষর বড় হাতের লেখা ভালো) তৃতীয় Assignment Operator (=) দিয়ে কারলি ব্রেসেছ {} দিয়ে তার মধ্যে Variable Key এবং তার ডাটা টাইপ উল্লেখ করতে হবে। চতুর্থ, নতুন টাইপ ডিফাইনকৃত Type Aliases ব্যবহার করার জন্য Type Annotations দিয়ে ব্যবহার করতে হবে। যেমন –

[

type UserType = { name: string; age: number };

  const user: UserType = {

    name: "Notesaid24.com",

    age: 30,

  };

]


TypeScript Type Interface লেখার নিয়ম

TypeScript এর ডাটা টাইপ ডিফাইন type annotation বা type aliases এর মধ্যে করা যায়, তা নিয়ে ইতিপূর্বে আলোচনা করেছি। এখন আমরা আরও একটি পদ্ধতি দেখবো তা হলো Type Interface যা হুবহু Type aliases এর মতো, কিন্তু সামান্য পার্থক্য তা হলো – Type aliases সমান (=) সাইন দিতে হয় কিন্তু Type Interface এ দিতে হয় না। বাকি সব একই নিয়মে লিখতে হয়।

Type Interface ব্যবহার করার জন্য প্রথমে interface কিওয়ার্ড লিখতে হয়। তারপর কোডের কার্যক্রমের উপর ভিত্তি করে একটি Variable নাম দিতে হয় (Variable নাম অবশ্যই প্রথম অক্ষর বড় হাতের লেখা ভালো) তৃতীয় কারলি ব্রেসেছ {} দিয়ে তার মধ্যে Variable Key এবং তার ডাটা টাইপ উল্লেখ করতে হবে। চতুর্থ, নতুন টাইপ ডিফাইনকৃত Type Interface ব্যবহার করার জন্য Type Annotations (:) দিয়ে ব্যবহার করতে হবে। যেমন –

 

[

interface UserType {

  name: string;

  age: number;

}

const user: UserType = {

  name: "Notesaid24.com",

  age: 30,

};

]


TypeScript Type Aliases এবং TypeScript Interfaces Type এর মধ্যে পার্থক্য –

Type Aliases

Interface Type

Type Aliases ব্যবহার করার জন্য ‘type’ কিওয়ার্ড ব্যবহার করতে হয়।

Interface Type ব্যবহার করার জন্য ‘interface’ কিওয়ার্ড ব্যবহার করতে হয়।

Type Aliases এ অন্য Type Aliases টাইপস্ক্রিপ্ট এর intersection type (&) এর মাধ্যমে ব্যবহার করে নতুন একটি টাইপ তৈরি করা যায়। এমনকি Type Aliases interface type এক্সটেন্ড করে ব্যবহার করা যায়।

type UserInfo = UserOne & UserTwo Or,

type UserInfo = UserOne & {

isAdmin : boolean

}

Interface Type এ অন্য Interface Type “extends’ কিওয়ার্ড এর মাধ্যমে ব্যবহার করা যায়। এমনকি Interface Type Type Aliases এক্সটেন্ড ব্যবহার করা যায়।

interface UserOne extends UserTwo {isAdmin: boolean}

Type Aliases এ পূর্বে ডিক্লেয়ারকৃত টাইপ কে দ্বিতীয়বার ডিক্লেয়ার করতে গেলে এরর দিবে। অর্থ্যাৎ, একই নামে দুইবার টাইপ ডিক্লেয়ার করা যাবে না।  যেমন –

type User = {

  title: string;

}

 

type User = {

  age: number

}

 // Error: Duplicate identifier 'User'.

Interface Type একই নাম দিয়ে দুইবার টাইপ ডিফাইন করা যাবে, তাতে কোনো এরর দিবে না। যেমন –

interface User {

  title: string;

}

 

interface User  {

  age: number

}

 

 


TypeScript Generic লেখার নিয়ম

TypeScript Generics ব্যবহার করার মাধ্যমে কোড Reusable করা যায় Generics সাধারণত Functions এবং class এ ব্যবহার করা হয় কেননা Functions এবং class বিভিন্ন ধরনের ডাটা টাইপ নিয়ে কাজ করতে হয়

[

// Simple generic function

function identity<T>(arg: T): T {

  return arg;

}


// Using the generic function

let result = identity<string>("Welcome!, Notesaid24 Website");

console.log(result); // Output: Hello, TypeScript!


// TypeScript can infer the type if you don't explicitly provide it

let inferredResult = identity(42);

console.log(inferredResult); // Output: 42


// Generic class example

class Box<T> {

  private value: T;


  constructor(value: T) {

    this.value = value;

  }


  getValue(): T {

    return this.value;

  }

}

]


 

[

// Using the generic class

let strBox = new Box<string>("TypeScript");

console.log(strBox.getValue()); // Output: TypeScript


let numBox = new Box<number>(42);

console.log(numBox.getValue()); // Output: 42



// Generic function to merge two arrays of the same type

function mergeArrays<T>(arr1: T[], arr2: T[]): T[] {

  return [...arr1, ...arr2];

}


// Example usage with different types of arrays

const stringArray1 = ["apple", "banana", "orange"];

const stringArray2 = ["grape", "kiwi", "melon"];


const mergedStringArray = mergeArrays(stringArray1, stringArray2);

console.log("Merged String Array:", mergedStringArray);

// Output: Merged String Array: [ 'apple', 'banana', 'orange', 'grape', 'kiwi', 'melon' ]


const numberArray1 = [1, 2, 3];

const numberArray2 = [4, 5, 6];


const mergedNumberArray = mergeArrays(numberArray1, numberArray2);

console.log("Merged Number Array:", mergedNumberArray);

// Output: Merged Number Array: [ 1, 2, 3, 4, 5, 6 ]

]

 

 

TypeScript Flag 

এখন TypeScript এর কিছু গুরুত্বপূর্ণ Flags নিয়ে বিস্তারিত আলোচনা করবো, কেননা Flags এর মাধ্যমে TypeScript কোড Compile করার সময় Flags এর মাধ্যমে আউটপুট ফরম্যাট enable / disable, কোড অপটিমাইজ করা যায়, নিন্মে TypeScript গুরুত্বপূর্ণ flags বর্ণনা করা হলো

 

--target: এই ফ্লাগটির মাধ্যমে JavaScript এর টার্গেটেড ভার্সন অনুযায়ী কোড কম্পাইল করা যায়, JavaScript এর সচরাচর নির্দিষ্ট কিছু ভার্সন – es3, es5, es6, es2015, es2016, es2017, es2018, es2019, es2020 এবং es2021

[

tsc --target es5 app.ts

]


--module: এই ফ্লাগটির মাধ্যমে JavaScript এর Moudle Format জেনারেট করা যায়, উল্লেখযোগ্য কিছু মডিউল হলো – commonJs, amd, system, umd, es2015 এবং es2020

[

tsc --module commonjs app.ts

]


--strict: এই ফ্লাগটির মাধ্যমে TypeScript এর টাইপ চেকিং করা যায়, উল্লেখযোগ্য কিছু টাইপ-চেকিং ফ্লাগস হলো - --noImplicitAny, --strictNullChecks, --strictFuntionTypes, --strictPropertyInitialization এবং --noImplicitThis

[

tsc --strict app.ts

]

[

tsc --noImplicitAny app.ts

]


--watch: এই ফ্লাগটির মাধ্যমে TypeScript কম্পাইলারকে সোর্স ফাইলের পরিবর্তনের মনিটরিং করা যায় এবং রাখা যায়

[

tsc --watch app.ts

]



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

About the author

AHSHAN HABIB
Hello! I am Ahshan Habib. Blogging is My Hobby and I Would Like to Share my Knowledge With Everyone. Here I Will Share Every Day About Education, Technology, and Programming. So Stay With us And Share my Page on Your Social Platform.

Post a Comment