useRef“是指一个值,但在这里被用作类型。”

时间:2019-04-08 15:32:22

标签: reactjs typescript react-hooks

我试图弄清楚如何判断哪个元素被用作引用(即我的情况)

const circleRef = useRef<AnimatedCircle>(undefined);

AnimatedCircle是来自第三方库的SVG组件,以这种方式定义它会导致错误

enter image description here

是否存在一些通用的方法来定义哪个元素是ref?

4 个答案:

答案 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