如何在Typescript中的函数内声明静态变量?

Ank*_*ngh 7 typescript

我知道我们可以像这样在类中声明静态变量或函数

class SomeClass(){
  static foo = 1;
  static fooBar(){ 
    return ++SomeClass.foo;
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法直接在函数内声明静态局部变量?

class SomeClass(){
  fooBar(){
    static foo = 1;
    return ++this.foo;
  }
}
Run Code Online (Sandbox Code Playgroud)

Rya*_*ugh 10

这是不可能的.您可以在类中声明静态,但不能在函数体中声明静态.

  • 我想抱怨这个.它不鼓励糟糕的设计吗?特别是鼠标处理我需要在鼠标按下时设置某些标志,然后在鼠标移动中查看.当然这些应该是一个方法 - 而不是组件. (2认同)

bas*_*rat 9

有没有办法在函数内部直接声明静态局部变量

它没有特殊的语法.但是如果你想要一个有状态函数,那么这里将介绍这个模式:https://github.com/basarat/typescript-book/blob/master/docs/tips/statefulFunctions.md

对于你的例子:

class SomeClass {
    fooBar = (new class {
        foo = 1;
        inc = () => this.foo++;
    }).inc
}

let foo = new SomeClass();
console.log(foo.fooBar()); // 1
console.log(foo.fooBar()); // 2
Run Code Online (Sandbox Code Playgroud)