动态地向打字稿中的类添加方法

时间:2019-10-21 04:07:17

标签: typescript

我正在尝试将一种方法动态地注入打字稿中的外部类。 我遇到错误了。

错误TS2339:类型'extclass'不存在属性'modifyLogger'。

代码:

    extclass['modifyLogger'] = function(mylogger:any){

     }

    interface extclass{
        modifyLogger(): void;
     }


     let obj = new extclass();
      obj.modifyLogger(log);

上面的代码给我错误

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

您应该使用

extclass.prototype['modifyLogger'] = function(mylogger:any){ }

代替上面的代码。

此外,请在应该接受参数的接口中更正ModifyLogger()的声明。

interface extclass{
    modifyLogger(arg: any): void;
}

更新 请参阅更新后的TS Playground

class Extclass { 
    test() {

    }
}
interface Extclass {
    modifyLogger(): void;
}

class Test {
    constructor() { 
        Extclass.prototype['modifyLogger'] = function () {
            alert('hi');
        }
        var obj = new Extclass();
        obj.modifyLogger();
    }
}

var t = new Test();