Hacker News new | ask | show | jobs
by shepherdjerred 551 days ago
There is a big difference between typing your application (e.g. changing (arg) => {} to (arg: string): void => {}) and modeling your application in the type system.

Simply adding types is usually not too difficult and it is still quite beneficial. It does eliminate certain kinds of bugs.

Modeling your application in a type system means making invalid states unrepresentable and being as precise as possible. This is a lot more work, but again is eliminates more kinds of bugs that can occur.

An example of this being complex: earlier this week I wrote a generic React component that allows users to define which columns of a table are sortable. I wanted to prevent any invalid configurations from being passed in. This is what it looks like: https://tinyurl.com/bdh6xbp6

It's a bit complex but the compiler can guarantee that you're using the component correctly. This is more important and useful when it comes to business logic.