https://medium.com/@devhoangkien/leveraging-typescript-to-improve-your-javascript-code-quality-ce0331c71f69