You cannot replicate `import type { x } from './foo'` without also re-exporting that import - which causes collisions.
The alternative is to do an inline `const foo = /** @type {import('./foo').x} */ ({})` however this gets messy, repetitive and it's difficult to use algebraic types (e.g. `Event & { detail: string }`)
Would `import type { x as y } from `./foo.x` not work?