Cannot re-export a type when using the --isolatedModules with TS 3.2.2

前端 未结 2 875
囚心锁ツ
囚心锁ツ 2021-01-11 10:38

I probably need to rethink the way we structure our React components. We are using the latest react-scripts that allow Typescript to be used and by default, the isolat

相关标签:
2条回答
  • 2021-01-11 11:14

    TS 3.8+

    You can use type-only imports and exports with --isolatedModules:

    // types.ts
    export type MyType = { a: string; b: number; };
    
    // main.ts 
    
    // named import/export
    import type { MyType } from './types'
    export type { MyType }
    
    // re-export
    export type { MyType } from './types'
    
    // namespace import
    import type * as MyTypes from "./types";
    export type RenamedType = MyTypes.MyType;
    export { MyTypes };
    
    //     ^ Note the "type" keyword in statements above
    

    Example Playground; Take a look at the PR for possible extension forms and proposals.


    TS 3.7 or older

    In previous versions, the following is not possible:

    import { MyType } from './types'; 
    export { MyType }; // error: Cannot re-export a type with --isolatedModules
    
    export { MyType } from "./types"; // error, like above
    

    Type re-exports have to use a workaround:

    import { MyType as MyType_ } from "./types";
    export type MyType = MyType_;
    
    // or
    export * from "./types"
    
    0 讨论(0)
  • 2021-01-11 11:23

    I am using the same structure personally and stumbled into the same issue after moving to a create-react-app boilerplate which enforces isolatedModules. A workaround that seems to be working in stark contrast to the idea behind isolatedModules is to use export * from "./Component"; in index.ts.

    0 讨论(0)
提交回复
热议问题