我试图弄清楚如何判断哪个元素被用作引用(即我的情况)
const circleRef = useRef<AnimatedCircle>(undefined);
AnimatedCircle
是来自第三方库的SVG组件,以这种方式定义它会导致错误
是否存在一些通用的方法来定义哪个元素是ref?
答案 0 :(得分:5)
我在遇到同样的错误
ReactDOM.render(
<App store={store} persistor={persistor} basename={PUBLIC_URL} />,
document.getElementById("root");
然后我将文件重命名为.tsx,这解决了该问题。原因是,当您使用React或ReactDOM时,必须将文件重命名为tsx而不是ts。对于JavaScript,.js有效,但对于TypeScript.ts不起作用。
答案 1 :(得分:1)
AnimatedCircle
是函数,而不是类型。这意味着它不能在TypeScript中代替类型使用,就像在useRef
的通用约束中一样。相反,您需要使用typeof operator
转换为类型:
const circleRef = useRef<typeof AnimatedCircle | null>(null);
答案 2 :(得分:0)
就我而言,我将文件重命名为.ts
而不是.tsx
。再次重命名将其修复。
答案 3 :(得分:0)
对我来说问题是我试图导入一个类型并用它来扩展一个类型:
import type ResultMap form...
尝试做Promise<typeof ResultMap>
但这如果不起作用,因为
<块引用>需要注意的是,类在运行时有一个值,在设计时有一个类型,并且使用是上下文相关的。使用导入类型导入类时,您不能对其进行扩展等操作。 (来源:ts docs)