typescript - 将方法动态添加到打字稿中的类
问题描述
我正在尝试将方法动态地注入打字稿中的外部类。我得到以下错误。
错误 TS2339:“extclass”类型上不存在属性“modifyLogger”。
代码:
extclass['modifyLogger'] = function(mylogger:any){
}
interface extclass{
modifyLogger(): void;
}
let obj = new extclass();
obj.modifyLogger(log);
上面的代码给了我错误
我在这里想念什么?
解决方案
你应该使用
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();
推荐阅读
- javascript - Firebase 和 ExpressJS 提供静态资源会导致 CSS MIME 类型错误
- android - 谷歌地图 APK IP 地址
- javascript - 检测来自客户端的 3rd 方扩展
- python - 以日期时间格式查找两列数据之间的单个时间跨度,可能使用 for 循环
- javascript - JS创建包含随机唯一数字的对象数组
- spring-boot - Spring Cloud Zuul 反向代理路由不适用于指定的版本和上下文路径休息应用程序
- r - 用另一列中的先前信息更改列中的数据
- vega-lite - Vega lite 中 y 轴的最小值
- java - java.lang.StackOverflowError ManyToMany: MapStruct - Spring Boot - Hibernate
- pandas - 时间列间隔过滤器