TypeScript声明合并嵌套命名空间

时间:2016-07-18 09:04:28

标签: typescript

有一个外部模块声明,其形状为:

declare module "external-module" {
  namespace SomeNS {
    namespace SubNS {
      // some functions.
      function someFunc(): void;
    }
  }
  exports = SomeNS;
}

我可以将某些功能设为SomeNS.subNS.someFunc()。但是现在我发现了一个方法,function methodMissingDefinition() {},缺少它的定义,我想在我的代码中修复它而不修改第三方声明。

是否有任何技巧可以让我这样做?

或者不可能这样做,唯一的方法是敦促作者修改声明?

1 个答案:

答案 0 :(得分:0)

因此,,您应该打开PR,并鼓励第三方维护人员更新输入内容;但是在此期间,我相信您可以像这样扩展第三方类型:

import * as externalModule from 'external-module';

declare module 'external-module' {
  namespace SomeNS {
    namespace SubNS {
      // missing functions.
      function methodMissingDefinition(): void;
    }
  }
  exports = SomeNS;
}

然后像这样导入它:

import * as externalModule from 'external-module';
import 'myExternalModuleExtension';

externalModule.SubNS.methodMissingDefinition()

我从这个GitHub问题中推断出可供参考:https://github.com/microsoft/TypeScript/issues/10859