All posts

TypeScript / Non-null assertion operator

Posted On 01.01.2022

Sometimes, you’ll run into a case where TS keeps complaining about a possibly undefined value. For example:

const numToString = (a?: number) => {
  return a.toLocaleString();
  // Error: 'a' is possibly 'undefined'.
};

The proper way to handle this error is actually to check if a is valid before returning any values:

if (a) {
  return a.toLocaleString();
} else {
  return "Failed";
}

But if you are sure that a will never be null or undefined, you can add ! to stop TS from complaining:

const numToString = (a?: number) => {
  return a!.toLocaleString();
};

What happens if a is still undefined at runtime? Your program will crash, of course.