When to reach for this pattern
Use it when several values are all primitives at runtime, but mean different things in your domain. IDs are the obvious example, but the same pattern also works for usernames, display names, slugs, email addresses, or any other string that should not be treated as just “some string”.
If you have ever passed the wrong value into a function and TypeScript could not help because everything was typed as string, this pattern is a very good fit.