问题描述
我正在为我的一个项目检查我的代码时,我注意到我的一个函数的名称是绿色的,而所有其他函数都是黄色的。
当我将鼠标悬停在readButton.addEventListener("click", toggleRead);
中的函数上时,它显示:Class toggleRead - function toggleRead(e: any): void
此外,当我将鼠标悬停在实际的函数声明上时,它显示为This constructor function may be converted to a class declaration.ts(80002)
附加信息
我正在使用toggleRead
函数来切换属性。this
关键字指的是调用该函数的按钮。它似乎没有在我的程序中引起任何问题,并且它正在按预期工作。
问题
我是否违反了某种导致此提示的代码约定,或者我是否做错了什么?另外,为什么visual studio认为此函数是构造函数?
类似问题
我发现this问题是关于堆栈溢出的,但问这个问题的人只对关闭提示感兴趣。我想知道我是否做错了什么。
代码
第一个
2条答案
按热度按时间cqoc49vn1#
正如在注解中提到的,分析器可能会将其标记为构造函数,因为它是如何定义的+它内部的内容,这类似于构造函数的编写方式。
解决方案可以是使用
const
和lambda表达式来定义它,如下所示。使用lambda表示法的另一个好处是,您可以使用此类函数,而无需首先对它们调用
bind
。因此,如果你现在正在执行
this.toggleRead = this.toggleRead.bind(this);
,那么你可以安全地删除它,因为lambda中的this
在默认情况下总是创建lambda的对象。z8dt9xmd2#
我想把Raymond的建议贴在我的问题下面,因为这解决了我的问题:
解决办法是用更符合习惯的
e.currentTarget
代替this
。