Interfaces pro:
- Edge case performance
- More traditional approach
- Interfaces with the same names are merged
Types pro:
- Can describe non-object shapes
- Types can not share names
Resources
Eslint provides this resource on when to use what: https://typescript-eslint.io/rules/consistent-type-definitions/