在setInterval中更新的typescript类的字段在该类的其他方法中没有定义的原因是因为setInterval中的回调函数会在全局作用域中执行,而不是在类的实例作用域中执行。在全局作用域中,无法直接访问类的实例属性和方法。
为了解决这个问题,可以使用箭头函数来绑定回调函数的作用域,确保在类的实例作用域中执行。箭头函数会继承外部作用域的this值,因此可以访问类的实例属性和方法。
下面是一个示例代码:
class MyClass {
private myField: string;
constructor() {
this.myField = "initial value";
setInterval(() => {
this.myField = "updated value";
}, 1000);
}
public myMethod() {
console.log(this.myField); // 可以访问到更新后的字段值
}
}
const myInstance = new MyClass();
myInstance.myMethod(); // 输出 "updated value"
在上述示例中,通过使用箭头函数来定义setInterval的回调函数,确保了回调函数在类的实例作用域中执行。这样,在回调函数中更新的字段值可以在类的其他方法中访问到。
腾讯云相关产品和产品介绍链接地址:
Game Tech
Game Tech
Game Tech
云原生正发声
云+社区技术沙龙[第3期]
技术创作101训练营
腾讯技术创作特训营第二季
云+社区技术沙龙[第14期]
云+社区技术沙龙[第12期]
领取专属 10元无门槛券
手把手带您无忧上云