我有一个看起来像这样的函数
let bcInst;
if(props.onBoundsChanged){
bcInst = kakao.maps.event.addListener(map, 'bounds_changed',()=>{
props.onBoundsChanged(map); //I get error here
})
}
道具界面如下所示
interface IMapProps{
mapId?: string;
longitude: number;
latitude: number;
level:number;
onBoundsChanged?:{
(map:any) : void
}
}
即使我在 if 语句中检查 props.onBoundsChanged,我也会收到 TS2722: Cannot invoke an object which might be 'undefined'。我使用 props.onBoundsChanged 的位置出错。我该如何解决这个问题?
TypeScript 正在说你的onBoundsChanged
可能是未定义的,因为您已将其定义为可选(?)
接口 IMapProps 中的属性:
onBoundsChanged?: {}
您的支票onBoundsChanged
for a truthy
值是正确的,但是稍后会调用事件监听器,这意味着onBoundsChanged
可能像 @basarat 指定的那样未定义。您可以通过使用其中之一来避免此错误在你的听众里面。
调用前检查真值onBoundsChanged
if(props.onBoundsChanged) onBoundsChanged(map)
Use 可选链接 ?.
操作员访问onBoundsChanged
props?.onBoundsChanged(map)
一些有用的学习资源:
您可以阅读更多有关truthy
来自 MDN 的值(此处)。https://developer.mozilla.org/en-US/docs/Glossary/Truthy https://developer.mozilla.org/en-US/docs/Glossary/Truthy
更多关于optional chaining ?.
运营商在这里。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)