首页 > 解决方案 > 将方法动态添加到打字稿中的类

问题描述

我正在尝试将方法动态地注入打字稿中的外部类。我得到以下错误。

错误 TS2339:“extclass”类型上不存在属性“modifyLogger”。

代码:

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

     }

    interface extclass{
        modifyLogger(): void;
     }


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

上面的代码给了我错误

我在这里想念什么?

标签: typescript

解决方案


你应该使用

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();

推荐阅读