简化action属性更新

通常状况下,store中会有很多属性,其中有些属性更新会很频繁,每一个属性都须要写一个action函数去更新,当这种须要变更的属性越多时,会导致store中代码量异样的宏大,可读性也会升高。就如上面代码一样:

class TestStore {  @observable info = {} as IInfo;    @observable list = [] as IList;    @action  setInfo = (value: IInfo) => {    this.info = value;  }    @action  setList = (value: IList) => {    this.list = value;  }}

引入typescriptkeyof关键字应用,能够将上述action函数简化如下:

class TestStore {  @observable info = {} as IInfo;    @observable list = [] as IList;    @action  setValue = <T extends keyof TestStore>(key: T, value: this[T]) => {    this[key] = value;  }}