如何分割大型打字稿index.d.ts文件

Jon*_*ith 5 javascript typescript

我们的应用程序有许多对象,例如,我们可以大致分为三类:“核心”,“应用”和“对象”。

我在网上遵循了基本的Typescript教程,目前只有一个index.d.ts具有这种布局:

interface AH {

}

declare var ah: AH;

declare module 'ah' {
    export = ah;
}

declare module ah {

    module objects {
        // much objects
    }

    module app {
        //many app
    }

    module core {
        //such core
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于我们使用了过时的源代码控制,将单个文件分解为3个单独的文件分别用于应用程序,核心和对象是有益的,它们的“命名空间”分别为ah.app.blah,ah.core.blah和ah.objects.blah。

我该如何实现?

Pel*_*obs 3

如果您不在其他项目中使用此库,则无需声明模块。

看起来你在这里有两个选择:

  1. 将要公开的类型声明导出到单独的文件中,并在需要时导入它们。由于这似乎是最常见的做法,而且当您处理外部模块时,我认为这有我个人的偏好。

    app.d.ts(~ core.d.ts、objects.d.ts)

    export interface theAppInterface {}
    
    Run Code Online (Sandbox Code Playgroud)

    src/index.ts(示例用法)

    import { theAppInterface } from '../app'
    import { theCoreInterface } from '../core'
    
    let appUsage: ah.app.theAppInterface
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在全局声明文件中声明单独的类别,以便将它们放入全局命名空间中,并且您不必在任何地方单独导入它们。例如。

    app.d.ts(~ core.d.ts、objects.d.ts)

    declare namespace ah {
      namespace app {
        interface theAppInterface {}
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    src/index.ts

    let appUsage: ah.app.theAppInterface
    let coreUsage: ah.core.theCoreInterface
    
    Run Code Online (Sandbox Code Playgroud)