# content
@jeremydmiller@hachyderm.io @simoncropp@hachyderm.io I'm not a fan in general for a lot of other reasons, but the fact that TypeScript types only exist at compile time (and you can tell the compiler to ignore them) does make things like strongly typed IDs easier to deal with. Generated code can just throw the types away, while user facing code gets type safety (for the value of safety TS allows at the best of times) on ID types without run time impact. Haskell allows alias types that have similar properties.

It's not really the kind of thing the dotnet type system is set up to deal with gracefully though.

# source.content
[@jeremydmiller@hachyderm.io](https://hachyderm.io/users/jeremydmiller) [@simoncropp@hachyderm.io](https://hachyderm.io/users/simoncropp) I'm not a fan in general for a lot of other reasons, but the fact that TypeScript types only exist at compile time (and you can tell the compiler to ignore them) does make things like strongly typed IDs easier to deal with. Generated code can just throw the types away, while user facing code gets type safety (for the value of safety TS allows at the best of times) on ID types without run time impact. Haskell allows alias types that have similar properties.

It's not really the kind of thing the dotnet type system is set up to deal with gracefully though.