Making Types Nullable in TypeScript the C# Way

As a developer working across both C# and TypeScript, I often find myself wanting familiar patterns from one language in the other. One concept that many C# developers miss when moving to TypeScript is the ability to declare a type as nullable, similar to how you’d handle nullable types in C# like int?.

Thank me by sharing on Twitter 🙏

In C#, marking a value type as nullable is straightforward with the ? syntax. When I started working more heavily in TypeScript, I wanted a similar way to handle nullability. Thankfully, there’s a clean and expressive way to do this, and I’ve shared this approach in a popular Stack Overflow answer to the question titled “How to declare a type as nullable in TypeScript?”.

To bring this C#-like behavior into your TypeScript projects, you can define a Nullable<T> type like this:

TypeScript
type Nullable<T> = T | null;

interface Employee {
   id: number;
   name: string;
   salary: Nullable<number>;
}

The Nullable<T> type is a flexible solution that allows any type to be nullable, just like in C#. In the example above, the salary property can either be a number or null, resembling C#’s int?.

This pattern is not only clean but also intuitive, especially for developers coming from a C# background. It’s a simple way to bring a bit of the C# feel into your TypeScript projects while maintaining clear and maintainable code.

This post ties back to the Stack Overflow answer where I first introduced this idea, and it’s become a popular reference for those looking to make their TypeScript code more expressive when handling nullability.

Share this:

Leave a Reply