如何向现有类添加扩展方法

JaS*_*Hin 3 typescript

我想向现有类添加方法扩展,但我不知道如何。我试过这个:

在此处输入图片说明

但我总是收到Property 'addAssembler' doesnt exist on type 'Container'错误。

Zbi*_*ski 7

您可以通过定义具有相同名称的接口并向其添加新方法来扩展类成员:

foo2.ts:

class Foo {
    spam?: string;
    bar() {
        console.log('Foo#bar');
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序:

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();
Run Code Online (Sandbox Code Playgroud)


Tit*_*mir 1

您需要声明一个模块增强:

declare module 'inversify' {
    export interface Container {
        addAssembler(): void
    }
}
Run Code Online (Sandbox Code Playgroud)

ts您可以在将方法添加到原型的文件中添加上面的声明Container

编辑

不幸的是,定义的方式Container阻止了增强。我们可以将模块中的类与接口合并,但它们必须定义为export class Container {}. 在这种情况下,容器导出为class Container {} export { Container }. 不幸的是,这阻止了增强。