但是代码在 chrome 控制台上完成工作,没有错误
constructor() {
window.onclick = (event: MouseEvent) => {
if (!event.target.matches('.dropbtn')) {
const dropdowns = document.getElementsByClassName('dropdown-content');
let i;
for (i = 0; i < dropdowns.length; i++) {
const openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
};
}
我想有 typescript 的东西..有人拥有它吗?
最佳答案
更改事件类型以进行快速修复:
window.onclick = (event: any) => {
您还可以使用类型断言来告诉编译器它没问题:
window.onclick = (event: MouseEvent) => {
const event_cast_type = event as any;
if (!event_cast_type.target.matches('.dropbtn')) {
但请记住,类型断言与使用任何类型断言一样危险,因为您告诉编译器您比编译器更了解类型。然而,对于这种情况,我认为这是解决此问题的唯一方法,因为类型断言将从根本上解决问题,即编译器。
关于angular - 我得到这个 ' Property ' 匹配'在类型 'EventTarget' 上不存在。'在 Angular-cli 输出上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49634155/