【发布时间】:2018-11-03 03:10:03
【问题描述】:
不确定我的标题是否正确。我正在为 NPM 包 prompt 创建一个类型声明文件。库本身是这样创建的:
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 文件?谢谢。
【问题讨论】:
-
我敢打赌
memory和`started键已经存在,但start()只是为它们设置了新值。这意味着require('prompt')和prompt.start()可能返回完全相同的类型。 -
memory没有。start()创建它。无论如何,你的评论触及了我不明白的核心:即使你说的是真的,what 我定义为start()的返回类型?它似乎返回了模块自己的导出,所以我需要以某种方式将我自己的 index.d.ts 导入到与 PromptModule 之类的文件相同的文件中,然后放入export function start(/*...*/): PromptModule;???这是如何在单个 index.d.ts 文件中完成的?
标签: typescript definitelytyped