有条件地调用类的属性/方法

时间:2017-09-08 20:13:23

标签: typescript metaprogramming proxy-classes

我在Typescript中有一个自定义数组类型类。我没有扩展它,因为它带来的困难,所以我只使用一个私有数组,每次我想使用数组方法时我必须直接引用它。

export class ObjectCollection<T extends ICollection> {

  public _Collection: T;
  public get Collection(): T {
    return this._Collection;
  }
  public getInstance: (id: string) => IListItem;

  constructor(collection: T) {
    this._Collection = collection;

    // used for getting instance from a collection of objects
    this.getInstance = (id: string): IListItem => {
      let instance = new Array<IListItem>();
      instance = this.Collection.filter(item => item.Id.toString() === 
      id.toString());

      if (instance && instance.length > 0) {
        return instance[0];
      }

      return new Object as IListItem;
    };

  }

}

如果我想从对象调用getInstance,我可以使用newobjectinstance.getInstance()。如果我想使用.map或本机数组函数,那么我必须调用newobjectinstance.Collection.map()。

如果我可以调用newobjectinstance.map()或newobjectinstance.length,那将会更加清晰。我怎么能改变我的代码以便这可能呢?

我简要介绍了代理,但在这种情况下无法弄清楚如何使用它们。它不是一个最佳的解决方案,因为它是一个反应应用程序,并且代理不会被babel轻易地转化。如果这是唯一的选择,我会尽力适应,但任何其他建议都会让我感到高兴。

0 个答案:

没有答案