TypeScript Tutorial #19: TypeScript with Next.js

In the previous tutorial, we learned about TypeScript with Node.js and Express. Now let’s learn about TypeScript with Next.js — the most popular React framework for building full-stack applications. By the end of this tutorial, you will know how to use TypeScript with the App Router, Server Components, Server Actions, Route Handlers, and typed data fetching. Setting Up Next.js with TypeScript npx create-next-app@latest my-app --typescript cd my-app npm run dev Next.js has built-in TypeScript support. It generates a tsconfig.json automatically and compiles your code without any extra setup. ...

May 9, 2026 · 6 min

TypeScript Tutorial #18: TypeScript with Node.js and Express

In the previous tutorial, we learned about TypeScript with React. Now let’s move to the backend — TypeScript with Node.js and Express. By the end of this tutorial, you will know how to set up a Node.js + TypeScript project, create typed Express routes, write middleware, handle environment variables, and build a simple REST API. Setting Up the Project Create a new directory and initialize: mkdir notes-api cd notes-api npm init -y Install dependencies: ...

May 9, 2026 · 6 min

TypeScript Tutorial #17: TypeScript with React

In the previous tutorial, we learned about async/await and Promises. Now let’s learn how to use TypeScript with React — the most popular combination in frontend development. By the end of this tutorial, you will know how to type components, props, hooks, events, context, and build generic components. Setting Up a React + TypeScript Project The fastest way is with Vite: npm create vite@latest my-app -- --template react-ts cd my-app npm install npm run dev This creates a project with TypeScript configured out of the box. All component files use .tsx extension. ...

May 8, 2026 · 6 min

TypeScript Tutorial #16: Async/Await and Promises

In the previous tutorial, we learned about error handling patterns. Now let’s learn about async/await and Promises — how to write type-safe asynchronous code in TypeScript. By the end of this tutorial, you will know how to type Promises, async functions, Promise.all, Promise.allSettled, error handling in async code, and how to build a typed fetch wrapper. Promises in TypeScript A Promise represents a value that will be available later. TypeScript adds types to Promises: ...

May 8, 2026 · 7 min

TypeScript Tutorial #15: Error Handling Patterns

In the previous tutorial, we learned about template literal types. Now let’s learn about error handling — one of the most important topics in any real application. By the end of this tutorial, you will know how to safely narrow the unknown error in catch blocks, create custom error classes, implement the Result type pattern, and follow best practices for error handling in TypeScript. Why catch Gives You unknown, Not a Typed Value You cannot write catch (error: SomeType) in TypeScript. There is no such syntax. The language does not allow you to annotate the catch parameter with a specific type. ...

May 8, 2026 · 7 min

TypeScript Tutorial #14: Template Literal Types

In the previous tutorial, we learned about mapped types and conditional types. Now let’s learn about template literal types — a way to create type-safe string patterns. By the end of this tutorial, you will know how to use template literal types, built-in string manipulation types, and practical patterns for events, APIs, and CSS. What Are Template Literal Types? Template literal types use the same backtick syntax as JavaScript template literals, but at the type level: ...

May 7, 2026 · 6 min

TypeScript Tutorial #13: Mapped Types and Conditional Types

In the previous tutorial, we learned about built-in utility types. Now let’s learn how those utility types are built — using mapped types and conditional types. By the end of this tutorial, you will know how to transform object types, extract types with infer, and build your own custom utility types. What Are Mapped Types? A mapped type creates a new type by transforming every property of an existing type. It loops over each key and applies a transformation. ...

May 7, 2026 · 6 min

TypeScript Tutorial #12: Utility Types

In the previous tutorial, we learned about modules and namespaces. Now let’s learn about utility types — built-in types that transform other types. TypeScript includes many utility types out of the box. They save you from writing complex type logic yourself. By the end of this tutorial, you will know when and how to use each one. Why Utility Types? Imagine you have a User type: interface User { id: number; name: string; email: string; age: number; } Now you need a function that updates a user. But you want to allow partial updates — only some fields, not all. Without utility types, you would need to create a new type manually: ...

May 6, 2026 · 6 min

TypeScript Tutorial #11: Modules and Namespaces

In the previous tutorial, we learned about classes and access modifiers. Now let’s learn about modules — how TypeScript organizes code across multiple files. By the end of this tutorial, you will know how to use import and export, type-only imports, declaration files, path aliases, and third-party type packages. What Are Modules? A module is a file that exports values, functions, types, or classes. Other files can import what they need. This keeps your code organized and avoids name conflicts. ...

May 6, 2026 · 8 min

TypeScript Tutorial #10: Classes and Access Modifiers

In the previous tutorial, we learned about generics. Now let’s learn about classes in TypeScript — how they work, what access modifiers do, and when you should use them. By the end of this tutorial, you will know how to use public, private, protected, readonly, abstract classes, parameter properties, and how to implement interfaces with classes. Basic Classes A class defines a blueprint for objects. TypeScript adds type annotations to JavaScript classes: ...

May 5, 2026 · 9 min