Header Ads

Header ADS

Node.JS - TypeScript Environment Setup

 

🔹 আমরা জানি  JavaScript এ কোনো data type নাই । তাই  Node.JS  ব্যবহার করার সময় কোনো  datatype দিতে হয় নি । কিন্তু আমরা যদি Node.JS -TypeScript  এর মাধ্যমে ব্যবহার করতে চাই তাহলে আমাদের datatype  বলে দিতে হবে code  এর সব জায়গাতে । 

কিন্তু সমস্যা হচ্ছে  Node.JS এ যে  datatype  গুলো আমাদের দরকার সেগুলো  TypeScript এ নাই । TypeScript  এ  primitive / Non primitive datatype  গুলো আছে তবে Node.JS  এর জন্য যে data type  গুলো দরকার সেগুলা  TypeScript  এ নাই বা TypeScript  সেগুলা চিনে না । যেমন ঃ server variable  টি 'Server' datatype এর হবে ,  req variable  টি  'IncommingMessage' datatype  এর হবে  __ কিন্তু এগুলা তো TypeScript এ নাই । 

এজন্য আমাদের একটি  module install করতে হবে । ঐ module  টি  install করলে TypeScript  Backend এর  datatype গুলো বুঝতে পারবে । বা আমরা তখন Node.JS  এর Datatype গুলো ব্যবহার করতে পারব । 

  1. @types/node → Node.js এর টাইপ
  2. @types/express → Express.js এর টাইপ


* React + TypeScript এ কাজ করার সময় সাধারণত আলাদা করে @types/react ইনস্টল করার  দরকার পড়ে না , কারন 

  1. React package এর ভেতরে type definition built-in থাকে

    1. নতুন React (>=16.9 থেকে শুরু করে) এর ভেতরেই .d.ts ফাইল আছে।

    2. মানে react আর react-dom ইনস্টল করলে TypeScript সরাসরি type definition খুঁজে পায়।

    3. এজন্য তোমাকে আলাদা @types/react বা @types/react-dom লাগছে না।

    👉 উদাহরণ:
    node_modules/react/index.d.ts
    node_modules/react-dom/index.d.ts

    এগুলো already type definition দিয়ে বানানো।

🔹 সংক্ষেপে:

  1. React এ আলাদা @types/react লাগছে না কারণ React already টাইপ define করে রেখেছে

  2. Node.js + Express এর মতো লাইব্রেরি যেগুলো pure JavaScript এ লেখা → ওগুলোর জন্য টাইপ আলাদা @types/... থেকে নিতে হয়।


tsconfig.json এ এভাবে আপডেট করো:

{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "rootDir": "src", "outDir": "dist", "strict": true, "esModuleInterop": true, "skipLibCheck": true } }

package.json এ এভাবে আপডেট করো:

{ scropts : {
        "build" : "tsc --watch" ,
        "start" : "nodemon ./dist/index.js"
        } }

Powered by Blogger.