Install datatype module (@types/নাম)
আমরা যখন কোনো থার্ড-পার্টি লাইব্রেরি ব্যবহার করি, আর সেটা যদি জাভাস্ক্রিপ্ট-এ লেখা থাকে (TypeScript না), তখন তার আলাদা টাইপ ডেফিনিশন প্যাকেজ লাগবে।
✅ বুঝবার উপায় কোন লাইব্রেরির টাইপ ইনস্টল করতে হবে:
-
যদি লাইব্রেরি TypeScript এ লেখা থাকে 👉 আলাদা টাইপ লাগবে না।
উদাহরণ:chalk
,zod
,prisma
— এগুলো আগে থেকেই TypeScript টাইপ দেয়। -
যদি লাইব্রেরি pure JavaScript এ লেখা হয় 👉 তার টাইপ আলাদাভাবে দিতে হয়।
তখন তুমি DefinitelyTyped রিপো থেকে (npm-এ)@types/লাইব্রেরি-নাম
খুঁজে পাবে।
উদাহরণ:express
→@types/express
-
cors
→@types/cors
-
morgan
→@types/morgan
-
বুঝতে চাইলে কীভাবে চেক করবে?
লাইব্রেরি ইনস্টল করার পর TypeScript এ import করলে যদি এরর দেয় — যেমন:
Could not find a declaration file for module 'morgan'.
👉 বুঝতে হবে এর টাইপ ডেফিনিশন নেই, আলাদা ইনস্টল করতে হবে।
-
অথবা সরাসরি npm-এ খুঁজে দেখো:
npm info @types/morgan
👉 যদি থাকে, ইনস্টল করো।
-
Shortcut Rule:
- প্রথমে লাইব্রেরি ইনস্টল করো।
তারপর TypeScript এ ইমপোর্ট করে দেখো এরর আসে কিনা।
-
এরর এলে
@types/লাইব্রেরি-নাম
খুঁজে ইনস্টল করো।
👉 মানে হলো — যে লাইব্রেরি ডিফল্টভাবে TypeScript সাপোর্ট করে না, সেটার জন্য আলাদা @types/...
প্যাকেজ লাগে।
Express eco-system এ কোন কোন লাইব্রেরি ব্যবহার করলে সাধারণত আলাদা @types/...
লাগবে, আর কোনটার লাগবে না?
🟢 যেগুলোর জন্য @types/...
লাগবে:
এগুলো pure JavaScript এ লেখা, তাই আলাদা টাইপ ইনস্টল করতে হয়।
express →
@types/express
-
cors →
@types/cors
-
morgan →
@types/morgan
-
body-parser →
@types/body-parser
-
cookie-parser →
@types/cookie-parser
-
helmet →
@types/helmet
-
jsonwebtoken →
@types/jsonwebtoken
-
bcrypt →
@types/bcrypt
-
multer →
@types/multer
-
session (express-session) →
@types/express-session
🔵 যেগুলোর জন্য আলাদা টাইপ লাগে না:
এগুলো TypeScript সাপোর্ট সহ আসে, তাই আলাদা @types/...
ইনস্টল করার দরকার নেই।
chalk
-
zod
-
prisma
-
dotenv
-
mongoose
-
axios
-
winston
🟡 মনে রাখার ট্রিক:
-
প্রথমে লাইব্রেরি ইনস্টল করো।
-
তারপর TypeScript এ ইমপোর্ট করে দেখো।
যদি error দেয় ➝
@types/...
প্যাকেজ খুঁজো।-
যদি error না দেয় ➝ বুঝবে টাইপ বিল্ট-ইন আছে।