首页 > 解决方案 > 如何为返回模块本身的第三方库函数创建 TypeScript defs

问题描述

不确定我的标题是否正确。我正在为 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 的自动生成的类型/提示/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 文件?谢谢。

标签: typescriptdefinitelytyped

解决方案


您应该能够只创建一个类型,并在.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
}

推荐阅读