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:
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.
Samsung P9 Express microSD Express Card, 512GB microSDXC Memory Card, Up to 800 MB/s, for Nintendo-Switch ™ 2, (MB MK512T/AM)
$74.99 (as of December 1, 2025 01:52 GMT +00:00 - More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)SZHAIYIJIN SD Card Reader for iPhone, Memory Card Reader with USB Camera Adapter Plug and Play Trail Game Camera Viewer Supports SD and TF Card MicroSD Card Adapter for iPad No App Required
$6.79 (as of December 1, 2025 01:52 GMT +00:00 - More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Co-Intelligence: Living and Working with AI
$23.10 (as of December 2, 2025 18:46 GMT +00:00 - More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)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.


