首页 > 解决方案 > 从 React.js 转换为 React.tsx 属性 'id' 不存在于类型 'never' 上。TS2339

问题描述

我正在尝试按照教程来学习类型脚本中的反应。但是,当我构建我的解决方案时,我得到了错误。代码

import React, { useState, useEffect } from 'react';
import axios from 'axios';


const DataFetching = () => {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    axios.get('https://jsonplaceholder.typicode.com/posts')
      .then(res => {
        console.log(res)
        setPosts(res.data)
      })
      .catch(err => {
        console.log(err)
      })
  })
  return (
    <div>
      <ul>
        {posts.map(post => (<li key={post.id}>{post.title}</li>))}
      </ul>
    </div>
  );
};

export default DataFetching;

我得到的错误

TypeScript error in src/DataFetching.tsx(21,43):
Property 'id' does not exist on type 'never'.  TS2339

我正在关注以下教程https://www.youtube.com/watch?v=bYFYF2GnMy8。任何帮助或指导表示赞赏

标签: reactjstypescriptreact-tsxreact-typescript

解决方案


您应该useState明确添加类型。当您提供空数组打字稿时,推断它的类型为never[].

const [posts, setPosts] = useState<Post>([]);


推荐阅读