How to Use NonNullable Typescript Type

One utility type I don't see used often is NonNullable.

This type ensures your variables aren't null or undefined, a common source of bugs in JavaScript-based applications.

How to Use

I always think it's easiest to understand with a code example, so let's look at it in action, assuming we have a hypothetical User type in our app:

type MaybeUser = User | null | undefined;

// Example creation of new Type
type AlwaysUser = NonNullable<MaybeUser>; // 👉 This would now be the type of `User` instead of `User | null | undefined`

// Ensuring the user is neither null nor undefined
function processUser(user: NonNullable<MaybeUser>) {
    // function logic here
}

In this example, MaybeUser is a type that can be either a User object, null, or undefined.

By using NonNullable<MaybeUser>, we create a new type where the null and undefined possibilities are excluded.

This means that the processUser function can safely operate, assuming that user is never null or undefined.

Practical Use Cases

NonNullable becomes extremely useful in scenarios such as:

  • API data processing where null values might be returned but should not be processed.
  • Handling optional properties in objects where certain operations require those properties to be present.
  • In state management where you might want to ensure that certain parts of the state are always defined.

As you dive deeper into TypeScript, understanding and utilizing utility types like NonNullable will undoubtedly make you a more effective and efficient TypeScript developer.

Remember, TypeScript’s arsenal of features is there to assist you in writing cleaner, safer code.

Mastering them is a step towards excellence in TypeScript development.

Happy coding! ✌️

TypeScript
Avatar for Niall Maher

Written by Niall Maher

Founder of Codú - The web developer community! I've worked in nearly every corner of technology businesses: Lead Developer, Software Architect, Product Manager, CTO, and now happily a Founder.

Loading

Fetching comments

Hey! 👋

Got something to say?

or to leave a comment.