https://medium.com/@landonton/10-best-practices-for-better-typesscript-code-with-examples-dab201f13fa6