TypeScript Best Practices for Large Scale Applications