Cannot import exported interface - export not found
Yesterday I found another question here and the solution it to declare the exported interface it a separate file. With one interface per file, it works for me without any warnings.
You might also be able to fix that by using a new feature in Typescript 3.8
called Type-Only Imports and Exports.
So it means you can import the problematic type A
like this:
import { B } from './test.model';
import type { A } from './test.model';
Also be aware that Angular only seems to support Typescript 3.8 from Angular 9.1 and above.
I also recommend reading this "Leveraging Type-Only imports and exports with TypeScript 3.8" post for more details.
The root cause is in Typescript and transpilation. Once TypeScript code is transpiled, interfaces/types are gone. They don't exist anymore in the emitted files.
While the types are erased, the imports/exports aren't necessarily. The reason is that there are ambiguities and that the compiler doesn't always know for sure whether something that is exported is a type or a value.
When using TypeScript 3.8
and up, all you need to do in your test.component.ts
is simply this:
import { A } from './test.model';
import type { B } from './test.model';
Another approach to removing the warning is the slightly distasteful hack of a union of the interface with itself.
@Input() bar: B | B;