Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

"Stringly typed", the way I've heard it, is a valid criticism when people replace type safety with magic strings which may or may not be checked at runtime but certainly not at compile time.

However, that's not the case when it comes to Typescript, because literal and union string types are actually checked at compile time. So what is the problem?



If everything is a string, you can accidentally use a UserID as a PostID.


Exactly. Especially easy if the variable name is “id”. For API methods which take multiple ids, the order is easy to mix up - though in TS that is conventionally handled with options objects.


But this is exactly what the article is about? I don't know what you mean by "option object" but it doesn't sound any more conventional than union types to me.


What I meant by option objects is a dictionary object holding all parameters.

doStuff({userId: foo, itemId: bar});

This allows the order of key/val pairs to move around, making it more robust to mistakes than doStuff: (string,string) => void.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: