We are using nominal typing to ensure that our IDs are typed per resource.
It allows our function parameters to be strongly typed and make sure TypeScript will raise an error if a TeammateId
is used instead of a ConversationId
.
Behind the scene, our IDs are simple strings.