【发布时间】:2020-11-12 15:05:36
【问题描述】:
我找到了在 TypeScript 中向现有类添加方法的解决方案。我必须在其中声明一个具有相同名称和方法的接口:
declare interface Buffer {
foo(): string;
}
Buffer.prototype.foo = function(): string {
return "bar";
}
但是如果我需要向它添加一个静态方法(Buffer.foo,而不是Buffer.prototype.foo)呢?
static 关键字在 declare interface 部分是不允许的并引发错误:'static' modifier cannot appear on a type member. ts(1070)
UPD:
对于@Grey:
你仍然不明白我在寻找什么。我需要一个 VALID(没有 //@ts-ignore)TypeScript 实现 EXACTLY 这个 JavaScript 代码:
// my-module/index.js
Buffer.foo = function() {
console.log("bar");
}
让用户这样做:
require("my-module");
Buffer.foo();
问题不在于我找不到替代方案。问题是我可以在 JavaScript 中 完全做到这一点 (↑),但不能在 TypeScript 中。 TypeScript 不应该至少在模块结构级别上与 JavaScript 完全兼容吗?我的意思是,我不能在 TS 中实现一个我可以在 JS 中轻松实现的模块是正常的吗?
【问题讨论】:
-
@Grey 这实际上不是我想要的。如果我理解正确,他们建议添加一个辅助接口,然后用它来调用这个静态方法。但是我想让我的模块的用户(它只是节点缓冲区的扩展)直接用
Buffer.foo(在JS或TS中)调用它。
标签: node.js typescript