我正在尝试修改另一个模块内的对象原型(类似于演示here)。但是,模块扩充似乎仅在扩充在同一模块中的所需文件中声明的对象而不是另一个模块时才起作用。
例如,我有一个班级TestClass
:
// some-module/TestClass.ts
export class TestClass {
someValue: string = "hi";
someFunc(): number {
return 5;
}
}
在同一个模块中,我有这个:
// some-module/index.ts
import { TestClass } from "./TestClass";
declare module "./TestClass" {
interface TestClass {
doSomethingElse(): void;
}
}
TestClass.prototype.doSomethingElse = function(): void {
console.log("Something else");
};
这很好用。但是,如果我将TestClass
移动到另一个模块(test-module/TestClass.ts
)并像这样适当地修改代码,那么每当我尝试访问'TestClass' only refers to a type, but being used as a value here.
时,它都会给出错误TestClass
。< / p>
// some-module/index.ts
import { TestClass } from "test-project";
declare module "test-project" {
interface TestClass {
doSomethingElse(): void;
}
}
TestClass.prototype.doSomethingElse = function(): void {
console.log("Something else");
};
我正在使用CommonJS的NodeJS模块解析。
非常感谢任何帮助。