@meiteinekos (酩酊猫)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

型 '{ text: string; }' を型 'string' に割り当てることはできません。

解決したいこと

reactとtypescriptでtodoリストを作っているのですが、
型エラーの解決方法がわからないので教えていただきたいです。

発生している問題・エラー

型 '(string | { text: string; })[]' の引数を型 'SetStateAction<string[]>' のパラメーターに割り当てることはできません。
  型 '(string | { text: string; })[]' を型 'string[]' に割り当てることはできません。
    型 'string | { text: string; }' を型 'string' に割り当てることはできません。
      型 '{ text: string; }' を型 'string' に割り当てることはできません。ts(2345)

親のApp.tsxでtaskListを管理していて、それを子であるinputForm.tsxにpropsで渡そうとしています。

 app.tsx
  const [taskList, setTaskList] = React.useState<string[]>([]);
return (
    <div className="body">
      <h1>Todoリスト</h1>
      <InputForm taskList={taskList} setTaskList={setTaskList}/>
      <TodoList/>
    </div>
  );
inputForm.tsx
export const InputForm = ({taskList, setTaskList}: {taskList: string[], setTaskList: React.Dispatch<React.SetStateAction<string[]>>}) => {

  const [inputText, setInputText] = React.useState<string>("");

  const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
    e.preventDefault();

    setTaskList([
      ...taskList, //ここでエラー
    {
      text: inputText
    }]);
  }
0 likes

1Answer

エラー文の通り{ text: string; }をstringの配列に入れようとしてエラーが出てる気がします。

setTaskList([
  ...taskList,
  { text: inputText } // <- ココ
]);

以下のようにしたら動かないでしょうか。

setTaskList([...taskList, inputText]);
1Like

Your answer might help someone💌