=== /user.ts === // Error, can't re-export something that's only a type. export { T } from "./exportT"; >T : any export import T2 = require("./exportEqualsT"); >T2 : any // OK, has a value side export { C } from "./exportValue"; >C : typeof CC // OK, even though the namespace it exports is only types. import * as NS from "./exportT"; >NS : typeof NS export { NS }; >NS : typeof NS // OK, syntactically clear that a type is being re-exported. export type T3 = T; >T3 : number // Error, not clear (to an isolated module) whether `T4` is a type. import { T } from "./exportT"; >T : any export { T as T4 }; >T : any >T4 : any // Ok, type-only import indicates that the export can be elided. import type { T as TT } from "./exportT"; >T : any >TT : number export { TT }; >TT : any // Error, type-only declaration is in a different file. import { C as CC } from "./reExportValueAsTypeOnly"; >C : typeof CC >CC : typeof CC export { CC }; >CC : typeof CC === /exportT.ts === export type T = number; >T : number === /exportValue.ts === export class C {} >C : C === /exportEqualsT.ts === declare type T = number; >T : number export = T; >T : number === /reExportValueAsTypeOnly.ts === export type { C } from "./exportValue"; >C : import("/exportValue").C