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

时间:2018-04-27 08:25:25

标签: typescript

我想在现有课程中添加方法扩展,但我不知道如何。我试过这个:

enter image description here

但我总是收到echo $results[0][0]; 错误。

2 个答案:

答案 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 }。不幸的是,这可以防止增加。