
What do we have here? Let’s see…we have a factory function (Maybe), that takes a value as a parameter, and returns an object with three methods:ġ- map: It takes a function, and if the value exists, applies that function on the value and returns a new value inside the same Maybe container (although a new instance). One way to do this imperatively could be: const number = // getting number from somewhere (DB/network/etc) let newNumber if (number) ) TypeScript has helped make my JavaScript code so much more robust than it had ever been before, and the continued development of the language has been making everything even better all the time.Let’s pretend there is a number we want to apply an operations to, and if that number is undefined/null, we want to avoid an error or unexpected result. You have no choice but to deal with optionality and undefined in JavaScript, but the great news is that there are a lot of tools available with which to deal with them. type Foo = Dealing with optionality isn’t optional. First, if you don’t tell TypeScript that a property is optional, it will expect it to be set. In strict mode, this means a couple of things. When you have a JavaScript object and you ask for a property that doesn’t exist, JavaScript will return undefined rather than throwing an error. I don’t think you can program JavaScript without having seen undefined is not a function at least once in your life - and once seems far too small a number. You must tell TypeScript if a property is optional. TypeScript has tools to deal with all of these.

Thankfully, TypeScript is a great tool for helping you deal with it and writing better code in the process. Thinking about it all the time tends to break brains, though - and not thinking about it introduces bugs. It’s a standard way to say, “This thing you asked for doesn’t exist.”

Working with JavaScript means working with undefined.
