如何在TypeScript类方法中无需this关键字访问类成员?
问题:TypeScript类中能否省略this关键字访问类成员?
我刚接触Node.js和TypeScript,在实现类时发现必须使用this关键字才能访问类成员,对此感到疑惑。示例代码如下:
class MyClass { private value: string constructor(value: string) { this.value = value; } getSomething() { return this.value } }
请问是否有办法在getSomething方法中省略this关键字?
不行,在TypeScript(以及JavaScript)的类方法里,必须通过this来访问类的实例成员。这是因为类的每个实例都有自己独立的成员副本,this指向当前调用方法的那个实例,能保证你访问的是该实例对应的成员。
不过有两种替代写法可以让你不用反复写this,但本质上还是依赖this:
解构
this:在方法开头把需要的成员解构出来,后面直接用变量名就行getSomething() { const { value } = this; return value; }使用箭头函数(不推荐用于类方法):箭头函数会捕获外层作用域的
this,但如果把方法定义成箭头函数,它会变成实例的属性而非原型上的方法,每个实例都会创建一个新的函数副本,会浪费内存。写法如下:class MyClass { private value: string; constructor(value: string) { this.value = value; } getSomething = () => this.value; }
总的来说,没有办法完全绕过this来访问类实例成员,解构只是语法糖,箭头函数则是改变了this的绑定方式,但都没真正省略对this的依赖。
内容的提问来源于stack exchange,提问作者MatrixRonny
相关产品推荐
相关产品推荐

