reactjs - 从 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。任何帮助或指导表示赞赏
解决方案
您应该useState
明确添加类型。当您提供空数组打字稿时,推断它的类型为never[]
.
const [posts, setPosts] = useState<Post>([]);
推荐阅读
- amazon-web-services - 错误创建 IPset 'WAFLimitsExceededException'
- css - 媒体查询只接头等舱
- angularjs - $rootScope.$broadcast 没有被触发
- pandas - 熊猫,将单元格从工作簿复制到另一个
- reactjs - 根据初始查询的数据触发第二个 GraphQL 查询
- shibboleth - 如何在 2 个冗余服务器上设置 2 个相同的 Shibboleth SP
- socket.io - 当 navigator.online 更改为 true 时如何告诉 socket.io 立即重新连接
- php - Slim REST API 从数据库和图像文件中删除记录
- c++ - 使用 Windows API 枚举端口时如何获取扩展端口信息
- javascript - TypeScript 编译错误:Array.map(callback) 表达式不可调用