答案 0 :(得分:2)
您可以通过定义具有相同名称的接口并向其添加新方法来表达类成员:
foo2.ts:
class Foo {
spam?: string;
bar() {
console.log('Foo#bar');
}
}
app.ts:
import { Foo } from './foo2';
declare module './foo2' {
interface Foo {
foo(): void;
}
}
Foo.prototype.foo = function(this: Foo) {
console.log('Foo#foo', this.spam);
}
const f = new Foo();
f.spam = 'eggs';
f.bar();
f.foo();
答案 1 :(得分:0)
您需要声明模块扩充:
declare module 'inversify' {
export interface Container {
addAssembler(): void
}
}
您可以在ts
文件中添加上述声明,并将方法添加到Container
原型中。
修改强>
不幸的是,定义Container
的方式会阻止扩充。我们可以将模块中的类与接口合并,但必须将它们定义为export class Container {}
。在这种情况下,容器将导出为class Container {} export { Container }
。不幸的是,这可以防止增加。