Javascript 在Typescript-Property';单击';不存在于类型';元素';

Javascript 在Typescript-Property';单击';不存在于类型';元素';,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我想在Typescript/Reactjs中的HTML元素上触发一个单击事件 let element: Element = document.getElementsByClassName('btn')[0]; element.click(); 上面的代码确实有效。但我得到一个打字脚本错误: ERROR in [at-loader] ./src/App.tsx:124:17 TS2339: Property 'click' does not exist on type 'Element'. 那

我想在Typescript/Reactjs中的HTML元素上触发一个单击事件

let element: Element = document.getElementsByClassName('btn')[0];
element.click();
上面的代码确实有效。但我得到一个打字脚本错误:

ERROR in [at-loader] ./src/App.tsx:124:17
TS2339: Property 'click' does not exist on type 'Element'.
那么正确的方法是什么呢?

使用类型而不是。HtmleElement继承自元素。在文档中,您可以发现HTMLElement中定义了
click
函数

通过将元素强制转换到HtmleElement中

let element: HTMLElement = document.getElementsByClassName('btn')[0] as HTMLElement;
element.click();

您应该使用
ref
访问DOM

<button  ref={button => this.buttonElement = button} />
In your event handler:

this.buttonElement.click();// trigger click event
像这样使用

(<HTMLElement>document.getElementsByClassName('btn')[0]).click()
(document.getElementsByClassName('btn')[0])。单击()
文档
.querySelectorAll(“.ant表行展开图标”)
.forEach(node=>node.click())
正确的(类型安全)方式是:

if(HTMLElement的元素实例){
元素。单击();
}

除非你真的需要,否则你不应该使用强制强制转换(正如其他答案所建议的那样)。

在使用Puppeter编写脚本时遇到了类似的问题,以下内容有助于解决该类型:
srcTracker:HTMLElement


page.$eval(this.selectorElement,(srcTracker:HTMLElement)=>srcTracker.click())

或者甚至
HTMLButtonElement
如果您知道它是
的话,则不可以:在[at loader]./src/Game中出错。tsx:123:13 TS2322:Type'Element'不能分配给Type'HTMLElement'。类型“Element”中缺少属性“accessKey”。请使用强制转换运算符
document.getElementsByClassName('btn')[0]作为HTMLElement
谢谢!我不知道我能演这样的角色。给我一种Java的感觉:o)typescript有时是垃圾initevent不再是标准的了,请解释一下!
(<HTMLElement>document.getElementsByClassName('btn')[0]).click()