扩展Typescript中导出变量的接口

时间:2018-12-02 00:09:32

标签: typescript typescript-declarations

我对TypeScript非常陌生,尤其是对于编写/扩展外部包的声明文件的新手。

我正在使用args npm软件包。它是用JavaScript编写的,因此其类型在@types/args中声明。

/** 
 * args/lib/index.js
 */
const publicMethods = {
  option: require('./option'),
  options: require('./options'),
  command: require('./command'),
  parse: require('./parse'),
  example: require('./example'),
  examples: require('./examples'),
  showHelp: require('./help'),
  showVersion: require('./version')
}

function Args() {
  this.details = {
    options: [],
    commands: [],
    examples: []
  }

  /* ... */
}

/* ...assign `publicMethods` to `Args` class... */

module.exports = new Args()
/**
 * @types/args/index.d.ts
 */

declare const c: args;
export = c;

interface args {
    /* ... */
}

/* ... */

args类具有一个名为details的私有属性(尽管我不知道为什么它是私有的),但未被@types/args公开。我想扩展args接口以暴露该属性,以便可以迭代这些选项,但是由于导出是变量而不是模块,因此我还没有弄清楚该怎么做。

我尝试使用带有和不带有declare module的{​​{1}},namespacedeclare namespacedeclare constdeclare var。这些都不起作用,或者我做错了。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

type IyourTypeThatExtendArgs = { myProperty: string } & args;

此代码将为您创建新类型,并且type将扩展args类型。 在花括号之间,您可以添加自己的属性以及args属性。 表示右侧的扩展类型。