打字稿模块中的持久状态

时间:2019-07-22 19:07:20

标签: typescript state

我想做这样的事情:

let serialId = 0;

export function getId() {
    serialId = serialId + 1;
    return serialId;
}

每次我从不同地方调用它时,id都会增加。现在看来,serialId的值对于每个import是独立的。

我是否需要一些神奇的声明,或者甚至需要一些工具来具有持久的“全局”状态。如果可能,我不希望serialId在模块外部可见。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用类中的方法:

export default class {
  serialId: number;
  constructor () {
    this.serialId = 0;
  }

  public getId(): number {
    this.serialId += 1;
    return this.serialId
  }

}

答案 1 :(得分:0)

如果您希望使用更多的功能性方法,则可以导出工厂:

export const stateFactory = (() => {
  let id = 0;
  return ({
    getId() {
        return ++id;
    }
  })
})()

const b = stateFactory.getId(); // 1
const c = stateFactory.getId(); // 2