Tip: Don't lie to TypeScript
Tip: Don't lie to TypeScript.
Lying to #TypeScript reduces type safety.
Examples:
- Setting "id" to 0 to represent an unsaved record.
- Making "id" optional.
These are lies.
A saved record always has an "id".
An unsaved record never does.
Solution? Declare separate types.

The more that TypeScript understands about our business rules, the better type safety it can provide.
So, if something is required, make sure a type requires it.
And, if something is optional in some cases, declare a separate well-named type that describes that scenario.