我在react-canvas-confetti包中使用的代码中有TS错误。当我试图为我的函数定义类型时,我不断得到以下错误,你会在下面看到。
(属性)React可变引用对象〈HTMLCanvasElement|当前:HTMLCanvasElement此表达式不可调用。类型“HTMLCanvasElement”没有调用签名。ts(2349)
const refAnimationInstance = useRef<HTMLCanvasElement | null>(null)
const getInstance = useCallback((instance: any) => {
refAnimationInstance.current = instance
}, [])
const makeShot = useCallback((particleRatio: number, opts: any) => {
refAnimationInstance.current &&
refAnimationInstance.current({
...opts,
particleCount: Math.floor(200 * particleRatio),
})
}, [])
我不知道如何定义它,这样refAnimationInstance就不会在这里为.current抛出错误:
refAnimationInstance.current({
...opts,
particleCount: Math.floor(200 * particleRatio),
})
您可以在此链接中查看五彩纸屑的工作示例:https://codesandbox.io/s/realistic-fn-react-canvas-confetti-forked-sixvv1?file=/src/App.js:904-975
1条答案
按热度按时间63lcw9qa1#
这个库不导出它们的类型,这很烦人,但是通过使用内置类型的冗长而复杂的用法,您仍然可以得到它:
然后在需要时使用类型:
此外,您还可以使用可选链接来避免使用
&&
短路: