【发布时间】:2021-06-20 18:38:01
【问题描述】:
我正在尝试为 https://www.npmjs.com/package/keypress 创建完整类型
我已经正确输入了基本函数(我认为),但不知道如何扩展 process.stdin 的声明,因为这个包可以让 IntelliSense 满意。
具体来说,keypress 添加了一个process.stdin.on('keypress', listener) 事件。 listener 的签名类似于 (ch: Ch, key?: Key) => void。
我不确定是否需要扩展Process 接口或ReadStream 接口,因为理论上如果我理解正确,它可以在任何ReadStream 上工作。
我也不确定是否可以通知 TypeScript 它在 ReadStream 上调用 keypress() 以添加功能。例如,除非调用keypress(),否则阻止访问。我怀疑这是可能的,但如果有可能的话。
这是我目前的尝试:
declare module "keypress" {
export default function keypress(stream: NodeJS.ReadStream): void;
export type Ch = any; // TODO
export type Key = {
// TODO
ctrl: any;
name: string;
};
namespace global {
namespace NodeJS {
interface Process {
stdin: NodeJS.ReadStream & {
fd: 0; // From official node types
on(event: "keypress", listener: (ch: Ch, key?: Key) => void): this;
};
}
}
}
}
我已经尝试了一些变体,但我不想一直盲目射击。对此的任何指示都非常感谢。干杯!
【问题讨论】:
标签: typescript definitelytyped