TypeScriptIntermediate
Async ও Promise (টাইপ সহ)
Promise<T>, async/await, try/catch এবং typed fetch response — asynchronous কোডে টাইপ ব্যবহার বাংলায়।
11টি অংশবাংলা ভাষায়
আধুনিক অ্যাপ আসলে async-ভিত্তিক। TypeScript-এ Promise<T> — T হলো eventual মানের টাইপ — দিয়ে async কোডও পুরো টাইপ-সুরক্ষিত হয়।
Promise<T>
function wait(ms: number): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function fetchSettings(): Promise<{ dark: boolean }> {
return Promise.resolve({ dark: true });
}
fetchSettings().then((settings) => {
console.log(settings.dark); // boolean
});async/await
async function loadUser(id: string): Promise<string> {
const response = await fetch("/api/users/" + id);
const data = (await response.json()) as { name: string };
return data.name;
}
// async ফাংশন সবসময় Promise ফিরত দেয়
const user: Promise<string> = loadUser("u-1");Error Handling
async function safeLoad(id: string): Promise<{ ok: boolean; error?: string }> {
try {
const response = await fetch("/api/users/" + id);
if (!response.ok) throw new Error("সার্ভার ত্রুটি");
return { ok: true };
} catch (error) {
const message = error instanceof Error ? error.message : "অজানা ত্রুটি";
return { ok: false, error: message };
}
}Typed API Response
interface User {
id: number;
name: string;
email: string;
}
interface ApiResponse<T> {
data: T;
message?: string;
}
async function getUsers(): Promise<ApiResponse<User[]>> {
const response = await fetch("/api/users");
if (!response.ok) {
throw new Error("ডেটা পাওয়া যায়নি");
}
return (await response.json()) as ApiResponse<User[]>;
}
const users = await getUsers();
users.data.forEach((user) => console.log(user.name));// Parallel — দুটো আরেকটা fetch একসাথে
const [userA, userB] = await Promise.all([
getUsers(),
getUsers(),
]);
// formatError-এ known type-কেবল
type ErrorType = { code: number; message: string };
function formatError(err: unknown): string {
if (err instanceof Error) return err.message;
if (typeof err === "object" && err !== null && "code" in err) {
return (err as ErrorType).message;
}
return "অজানা ত্রুটি";
}fetch-এ টাইপ
response.json() সবসময় any/unknown ফেরত দেয় — তাই interface define করে as বা narrowing করে ব্যবহার করুন। API-তে API-নির্দিষ্ট schema যদি থাকে, তা সবচেয়ে ভালো।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।