There are several reasons to use interfaces in TypeScript:
- they perform better at build-time and in editor
- they have more relaxed rules for recursion
- they can help identify complex types and distinguish them from simpler ones
- they’re guaranteed to be usable to enforce class implementations, whereas only simple types can be used
- they’re much easier to read in type errors