Reactjs 使用Typescript映射对象数组

Reactjs 使用Typescript映射对象数组,reactjs,typescript,Reactjs,Typescript,在我的简单typescript/react应用程序中,当我尝试映射对象数组时,我得到一个错误,即类型“object”上不存在属性“title” const Todo = () => { const [todos, setTodos] = useState<object[]>([]) const [title, setTitle] = useState<string>('') const [body, setBody] = useState<stri

在我的简单typescript/react应用程序中,当我尝试映射对象数组时,我得到一个错误,即类型“object”上不存在属性“title”

const Todo = () => {
  const [todos, setTodos] = useState<object[]>([])
  const [title, setTitle] = useState<string>('')
  const [body, setBody] = useState<string>('')

  const onSubmit = (e: React.FormEvent<HTMLFormElement>): void => {
    e.preventDefault()

    const todo = {
      title: title,
      body: body
    }

    setTodos([todo, ...todos])
    setTitle('')
    setBody('')
  }
  return (
    <>
      <form onSubmit={onSubmit}>
        <input value={title} onChange={e => setTitle(e.target.value)} />
        <input value={body} onChange={e => setBody(e.target.value)} />
        <button>submit</button>
      </form>
      todos:
      {todos.map((todo) => <div><h3>{todo.title}</h3>
        <p>{todo.body}</p></div>)}
    </>
  );
}
const Todo=()=>{
const[todos,setTodos]=useState([]
const[title,setTitle]=useState(“”)
const[body,setBody]=useState(“”)
const onSubmit=(e:React.FormEvent):void=>{
e、 预防默认值()
常数todo={
标题:标题,,
身体:身体
}
setTodos([todo,…todos])
setTitle(“”)
立根体(“”)
}
返回(
setTitle(e.target.value)}/>
setBody(e.target.value)}/>
提交
待办事项:
{todo.map((todo)=>{todo.title}
{todo.body}

)} ); }
它失败,因为您说
TODO
对象[]
,但
对象
类型没有与之关联的属性。如果您将其更改为下面的示例,它应该可以工作

const [todos, setTodos] = useState<{title: string, body: string}[]>([])
const[todos,setTodos]=useState([]

为什么要将todos作为object[]?将其更新为any
const[todos,setTodos]=useState([])
如果不是,我将得到一个类型为“{title:string;body:string;}[]”的错误参数,该参数不能分配给setTodos上的“SetStateAction”类型的参数。