Denote an Optional Property
This is a one character solution.
? before the colon tells TypeScript that the property isn't required in order for the function to work.
With this update, we don't have to pass in a
last if we don't want to:
? will also work when using named types, or anywhere else object keys can be specified.
Tooling in VS Code is smart enough to recognize if a key is optional. This can be seen in the autocomplete, where you will be reminded that
last should be either a string or undefined.
If you have prior experience with TypeScript, you might have seen a type explicitly set to
undefined as seen below:
However, written this way we do have to pass
last. More on "or" later.
If you want to set a property as optional, use the
The trick here is to add this little character just before the colon. When I remove it, we go back to basically the problem set-up. What this does is it means that you do not need to pass this in order for this to work.
I can extract this to a type if I want to. Type params equals this, and it will work in there too. Anywhere that you can specify an object key, you can use this. It means that I can pass this last if I want to.
You notice that, without this, if I remove it again and I go on the autocomplete, there's no question mark after that last just there. Whereas, if I add that, then I get the question mark saying I could pass either a string or undefined. That little or will come up later, but it's a nice way of saying it.
An alternative, if you've got a little bit of experience with TypeScript, is you could do last or undefined here, but this means you do need to pass in something in there. I could say last is undefined, and that would make it happy, but adding that little question mark character means that I don't even need to pass the property.