代码之家  ›  专栏  ›  技术社区  ›  Matt McCutchen

“export{}”是否有意关闭TypeScript模块声明中所有符号的自动导出?

  •  2
  • Matt McCutchen  · 技术社区  · 6 年前

    在TypeScript外部模块声明中(整个 .d.ts 文件或文件 declare module 块),默认情况下,即使未标记符号,也会导出所有符号 export discovered 加一个 export { ... } 语句禁止此行为,以便仅标记符号 出口 已导出。

    my-module.d.ts :

    export const a = 1;
    declare const b = 2;
    export {};
    

    consumer.ts

    import { a } from "./my-module";  // OK
    import { b } from "./my-module";  // Error
    

    这种行为可能有用。这是故意的,还是一个打字错误,我应该报告,而不是鼓励人们依赖?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Matt McCutchen    6 年前

    andy-ms says 这种行为是故意的(但是它是没有文档记录的,就像很多高级的打字行为一样

    我找到了 the compiler code

    • export { ... }
    • export { ... } from "module"
    • export * from "module"
    • export = ...
    • export default 但不是 导出默认值 函数、类或接口定义的
        2
  •  0
  •   unional    6 年前

    TypeScript文件可以是脚本文件或模块文件。 to之间的区别在于模块文件至少有一个顶级导入/导出。

    export 关键字将可用。

    对于脚本文件,它被视为全局文件的一部分,这意味着您的内容将在其他文件中可用。

    *.d.ts ),在DefinitelyTyped中,它们被写成脚本文件,格式为 declare module x { ... } 定义特定模块的类型。

    它是以DefinitelyTyped的方式编写的,因为它是许多模块的存储库,并且工具需要知道它是为哪个模块定义的。