v3.0.0
When the compiler can derive return types, it often creates Franken-types of all the properties of a returned type instead of using an interface. Worse, when it detects an interface it often imports it from a filesystem path instead of an exports map path (e.g. `module/dist/src/foo.js` instead of `module/foo`) which then breaks downstream consumers. Instead, let's require return types to be explicit to catch these things early.