Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 获取`不可分配给类型';绝不';`我的TypeScript函数中的问题_Reactjs_Typescript - Fatal编程技术网

Reactjs 获取`不可分配给类型';绝不';`我的TypeScript函数中的问题

Reactjs 获取`不可分配给类型';绝不';`我的TypeScript函数中的问题,reactjs,typescript,Reactjs,Typescript,我在React函数组件中有一个函数,它在vanilla JavaScript中是有效的语法(当然,这里没有类型定义),但在TypeScript中我遇到了问题。这就是所讨论的功能: const getSelection = (id: number, selection: string) => { setAnswers((answers) => { const result = [...answers]; result[id] = selection;

我在React函数组件中有一个函数,它在vanilla JavaScript中是有效的语法(当然,这里没有类型定义),但在TypeScript中我遇到了问题。这就是所讨论的功能:

  const getSelection = (id: number, selection: string) => {
    setAnswers((answers) => {
      const result = [...answers];
      result[id] = selection; // The error is here
      return result;
    });
  };
这就是错误:

Type 'string' is not assignable to type 'never'.ts
顺便说一下,
setAnswers
是我使用React的
useState()


我不清楚如何解决这个问题。我为传入的每个参数指定了类型,但这并不能解决问题。我还尝试暂时为这两个参数
any
创建类型,但这也没有解决问题。

问题是Typescript无法推断
asnwers
数组中项目的类型。这是因为当您将状态初始化为空数组时,没有可以推断类型的项。因此,typescript将状态类型推断为
never[]
,这是不可用的,因为除了
never
之外,没有任何东西可以
never

您可以通过使用该状态的类型显式键入对
useState
的调用来修复它,在本例中为
string[]

const [answers, setAnswers] = useState<string[]>([])
const[answers,setAnswers]=useState([])
然后您的代码按预期工作


设置应答功能的类型是什么?请发布一个。更多信息请参见以上详细信息。
const [answers, setAnswers] = useState<string[]>([])