状态函数

其他编程语言有一个共同特征,它们使用 static 关键字来增加函数变量的生命周期(不是范围),使其超出函数的调用范围,如 C 语言中的实现:

  1. void called () {
  2. static count = 0;
  3. count++;
  4. printf("Called : %d", count);
  5. }
  6. int main () {
  7. called(); // Called : 1
  8. called(); // Called : 2
  9. return 0;
  10. }

由于 JavaScript(TypeScript)并没有静态函数的功能,你可以使用一个包裹着本地变量的抽象变量,如使用 class

  1. const { called } = new class {
  2. count = 0;
  3. called = () => {
  4. this.count++;
  5. console.log(`Called : ${this.count}`);
  6. };
  7. }();
  8. called(); // Called : 1
  9. called(); // Called : 2

原文: https://jkchao.github.io/typescript-book-chinese/tips/statefulFunctions.html