动态调用Typescript类里面的方法

let testJson ={
    "XA" : 1,
    "XB" : 1,
    "XD" : 1,
    "XE" : 1,
  }

  // 使用 WeakMap 存储方法到 JSON 键的映射关系
  const methodToJsonKeyMap = new WeakMap<Function, string>();
  const jsonKeyToMethodMap = new Map<string, Map<any, Function>>();

  // 装饰器:将方法关联到 JSON 键
  function jsonKey(key: string) {
    return function(value: Function, context: ClassMethodDecoratorContext) {
      // 存储映射关系:方法 -> JSON 键
      methodToJsonKeyMap.set(value, key);
      
      // 存储反向映射:JSON 键 -> (实例 -> 方法)
      if (!jsonKeyToMethodMap.has(key)) {
        jsonKeyToMethodMap.set(key, new Map());
      }
      
      // 在 addInitializer 中建立实例到方法的映射
      context.addInitializer(function() {
        const instanceMap = jsonKeyToMethodMap.get(key)!;
        instanceMap.set(this, value.bind(this));
      });
      
      // 不返回或返回 void,保持原方法不变
      return;
    };
  }

  // 方案1:工具类 - 使用装饰器元数据(推荐)
  class MethodCaller {
    // 根据 JSON 对象的键,通过装饰器元数据调用对应的方法
    static callMethods

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值