如何为返回模块本身的第三方lib函数创建TypeScript defs

时间:2018-11-02 18:05:35

标签: typescript definitelytyped

不确定我的标题是否正确。我正在为NPM包提示创建类型声明文件。库本身是这样创建的:

var prompt = module.exports = Object.create(events.EventEmitter.prototype);
prompt.started = false;
/* ... */
prompt.start = function (options) {
    /* ... */
    prompt.memory = options.memory || 10;
    /* ... */
    prompt.started = true;
    return prompt;
}
/* ... */

我正在尝试通过遵循DefinitelyTyped自动生成的类型/prompt/index.d.ts文件中的说明来创建.d.ts文件。

好像我会放

export function start(options?: promptOptions): **????**

定义我们在上面看到的prompt.start。我已经有

export let started: boolean;

export interface promptOptions {
    memory?: number;
    allowEmpty?: boolean; // etc.
}

但是我不确定函数应该返回什么类型。它似乎正在返回模块本身的修改版本。我应该如何构造.d.ts文件?谢谢。

1 个答案:

答案 0 :(得分:0)

您应该能够创建一个类型,并在.d.ts文件的两个位置使用它。

我是打字机的新手,但我认为您想要这样的东西:

// Set the type of the module.
export = Prompt

interface PromptOptions {
    memory?: number;
    allowEmpty?: boolean;
}

type Prompt = {
  memory?: number,
  started: boolean,

  // this type has a method that return itself.
  start(PromptOptions): Prompt
}