Advanced TypeScript: Exploring Generics, Conditional Types, and Indexed Access Types

Alex Martinez
2 min readJul 30, 2023

--

Introduction

TypeScript has gained tremendous popularity in recent years due to its ability to bring static types to JavaScript, offering developers a robust toolset for building large, complex applications. In this article, we’ll delve into the depths of advanced TypeScript concepts: Generics, Conditional Types, and Indexed Access Types.

Generics

Generics are an incredibly powerful feature in TypeScript that enables us to write flexible and reusable code without sacrificing type safety. They allow you to write a function or a class that works with different types while still keeping type information.

function identity<T>(arg: T): T {
return arg;
}

let output = identity<string>(“hello world”);

In this example, T is a type variable. It acts as a placeholder for any type. We’ve defined a function identity that works with any type and still retains the information about that type.

Conditional Types

Conditional types in TypeScript allow you to introduce type logic and create types that depend on conditions. They follow this pattern: T extends U ? X : Y.

type NonNullable<T> = T extends null | undefined ? never : T;

In this case, NonNullable<T> is a type that is whatever T is, as long as T is not null or undefined. If T is null or undefined, NonNullable<T> is never.

Indexed Access Types

Indexed Access Types (also known as Lookup Types) allow us to look up the type of a property on another type. This is done by writing T[K], where T is some type and K is a type that can be used as an index for T.

type Person = {
name: string;
age: number;
}

type Age = Person["age"]; // Age is of type number

Here, Age is the type of the age property in Person, which is number.

Conclusion

Mastering generics, conditional types, and indexed access types will undoubtedly elevate your TypeScript game. They provide a powerful toolset for writing dynamic and reusable code without sacrificing type safety. The best way to become proficient with these advanced TypeScript features is by practice, so don’t shy away from using them in your projects. Happy coding!

--

--

Alex Martinez

TypeScript enthusiast simplifying complex concepts one article at a time. Join me in our journey to unravel the power of TypeScript!