ts装饰器保存this指向

要使用 function 而不是 箭头函数

typescript 复制代码
interface MethodDecorator<T> {
  (
    target: Object,
    propertyKey: string | symbol,
    descriptor: TypedPropertyDescriptor<T>
  ): TypedPropertyDescriptor<T> | void;
}

type TMethodDecorator = MethodDecorator<any>;

const matchImport: TMethodDecorator = (target, propertyKey, descriptor) => {
  const callback = descriptor.value;

  descriptor.value = function (...args: any[]) {
    console.log("decorator", this);
    return callback.call(this, ...args);
  };
};
相关推荐
Irissgwe12 小时前
线程概念与控制
linux·开发语言·c++·线程
Yao.Li12 小时前
python-pcl 安装排障流程
开发语言·python
SuperEugene12 小时前
Vue3 组合式函数(Hooks)封装规范实战:命名 / 输入输出 / 复用边界 + 避坑|Vue 组件与模板规范篇
开发语言·前端·javascript·vue.js·前端框架
cmd12 小时前
JS深浅拷贝全解析|常用方法+手写实现+避坑指南(附完整代码)
前端·javascript
进击的尘埃12 小时前
AbortController 实战:竞态取消、超时兜底与请求生命周期管理
前端·javascript
张一凡9312 小时前
我用 Zustand 三年了,直到遇见 easy-model...
前端·javascript·react.js
张元清12 小时前
React 拖拽:无需第三方库的完整方案
前端·javascript·面试
雨师@12 小时前
多个golang版本如何切换的办法
开发语言·后端·golang
春日见13 小时前
自动驾驶的四个演进阶段
开发语言·人工智能·驱动开发·matlab·docker·计算机外设
zhensherlock13 小时前
Protocol Launcher 系列:Microsoft Edge 浏览器唤起的优雅方案
javascript·chrome·microsoft·typescript·edge·github·edge浏览器