增强外部接口

时间:2019-07-08 17:54:09

标签: typescript

我正在尝试扩充types中的convict。当前,定义使用以下命令导出convict

namespace convict { ... }
interface convict { ... }
declare var convict: convict;
export = convict;

因此,我扩展了界面(在./types/convict/index.d.ts中):

declare module 'convict' {
  interface convict {
    <T>(
      config: convict.Schema<T> | string,
      options?: { env: Record<string, string> }
    ): convict.Config<T>;
  }
}

但是,在导入默认导出convict时未拾取此接口。看来这是由export = convictdeclare var convict: convict引起的。但是我可以直接导入增强接口:

// Default import fails - same interface as @types/convict
import convict from 'convict';

// Import interface directly is ok - convict interface is augmented
import { convict } from 'convict';

任何人都可以帮助我理解为什么export = convictdeclare var convict: convict忽略增强接口吗?

1 个答案:

答案 0 :(得分:0)

根据Titian's comment,这是不可能的,因为导出分配将可见性限制为仅导出的声明-其他声明是私有的,因此无法进行扩展。