When thinking of trick in typescript, we think from this order:
1. eslint / linting => use eslint to achieve something impossible in typescript and javascript
2. typescript hack => trick the typescript interpreter
3. javascript hack => use javascript to achieve something impossible in typescript