# Async Functions और Promise Types — TypeScript Fundamentals

Source: https://www.geekswithgeeks.com/hi/typescript/ts-async-promises

> Promise<T> और async/await से asynchronous code type करें, और strict mode में errors सुरक्षित रूप से संभालें।

`async` function हमेशा `Promise` return करता है। Resolved type को `Promise<T>` के अंदर declare करें।

```ts
interface User { id: number; name: string }

async function fetchUser(id: number): Promise<User> {
  const res = await fetch(`/api/users/${id}`);
  return (await res.json()) as User;
}

const user = await fetchUser(1); // user: User
```

`Promise.all` हर position का type रखता है, और strict mode में `try/catch` की errors `unknown` होती हैं, इसलिए उन्हें narrow करें।

```ts
const [a, b] = await Promise.all([fetchUser(1), Promise.resolve("ok")]);
// a: User, b: string

try {
  await fetchUser(2);
} catch (e) {
  if (e instanceof Error) console.log(e.message);
}
```

त्वरित जाँच

**Quiz:** `async function f(): Promise<number>` का return type क्या है?

- [ ] number
- [x] Promise<number>
- [ ] void
- [ ] unknown

*Answer:* Promise<number>. Async function अपना result हमेशा Promise में wrap करता है।
