While both type aliases and interfaces are valid and would work in the given context, there are pros and cons to each depending on the situation. Type would be best used for function signatures, union types, and complex mapped or conditional types. Meanwhile, interface would be the better option for public API contracts, declaration merging, and when working with classes or implementing an OOP style. This is outlined in the table below:
type and interface differences
TypeScript lib.d.ts uses type aliases as built-in function types are simpler and better expressed with type aliases. It keeps things readable and concise.
Overall, whether you use type aliases or interfaces is mainly personal preference. However, some situations may be more beneficial to use one over the other.