reactjs 类型“Element”不能赋给类型“string”,ts(2322)

flvlnr44  于 2023-01-17  发布在  React
关注(0)|答案(5)|浏览(253)

我是新的react typescript开发人员,在这里我有一个代码,在'js'工作,但当更改为'tsx'得到错误:类型'Element'不能赋值给类型'string'。ts(2322)它指向'helperTextt'错误(在其他地方没有找到答案)我应该做什么:让helperTextt:任意=“";?
有什么建议吗?

let helperTextt = "";

if (event.target.id === "hostname") {
  if (!HOSTNAME_REGEX.test(event.target.value)) {
    helperTextt = (
      <Trans i18nKey="form.formData.hostNameError">
        Invalid Host name
      </Trans>
    );
    errorr = true;
  }
}
bakd9h0s

bakd9h0s1#

你可以

import { ReactElement } from "react";

然后

let helperTextt: ReactElement | null = null;
62o28rlo

62o28rlo2#

Typescript会自动推断helperTextt是一个字符串,如果你确定它的值,你可以通过声明它为any类型来绕过这个问题(尽管不推荐声明any类型):

let helperTextt:any;
yi0zb3m4

yi0zb3m43#

可以向helperTextt变量添加类型

let helperTextt: JSX.Element = null;
yeotifhr

yeotifhr4#

let helperText: JSX.Element | string = "";

    if (event.target.id === "hostname") {
        if (!HOSTNAME_REGEX.test(event.target.value)) {
          helperText = (
            <Trans i18nKey="form.formData.hostNameError">
              Invalid Host name
            </Trans>
          );
          errorr = true;
        }
      }
daupos2t

daupos2t5#

也许这是一个与Typescript本身推断的变量类型有关的问题,就像我的例子一样,我使用title作为名称,它最初是一个组件的字符串属性,但后来将其类型声明为ReactElement,这就产生了这个问题!为了解决这个问题,我刚刚将属性从title重命名为appTitle,这就像变魔术一样!

相关问题