【问题标题】:TypeScript declaration merging for nested namespaces嵌套命名空间的 TypeScript 声明合并
【发布时间】:2016-11-20 19:37:58
【问题描述】:

有一个外部模块声明的形状:

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

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

有什么技巧可以让我做到这一点吗?

还是无法做到,只能督促作者修改声明?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    所以,是的,您应该打开 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 2018-07-24
      • 2014-08-06
      相关资源
      最近更新 更多