typescript - 如何为返回模块本身的第三方库函数创建 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 文件?谢谢。
解决方案
您应该能够只创建一个类型,并在.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
}
推荐阅读
- c# - url 参数传递电话号码,例如 +1234,如何检索它,例如 abc.com/save/xyz/+123
- output - 在没有固有输出文件的情况下运行 Sumo
- neovim - Vim-airline maxline 符号与 % 符号重叠
- delphi - MDI选项卡上的双击事件(Delphi)
- reactjs - 如何从子功能组件更新 React 中的父状态?
- dns - Gmail 显示旧域名所有者的照片和姓名
- ios - 如何压缩两个发布者但获取最新值而不是 zip 的默认最旧行为?
- kubernetes - 添加标签无法通过动态资源和客户端运行
- python - 根据用户输入在列表中创建列表
- zsh - 为什么`which`打印出一个脚本?