useReducer 的initialState 类型为never?

2024-03-14

初始状态有错误:类型为 '{ email: string; 的参数密码:字符串;有效:布尔值; }' 不可分配给“never”类型的参数。ts(2345)


function reducer(state: IState, action: IFluxAction) {
  const Users = UsersFetch()
  switch (action.type) {
    case 'email':
      const email = action.value
      const valid = Users.find(e => e === email) ? true : false

      return {
        email,
        valid,
      }
    case 'password':
      const password = action.value
      return {
        password,
      }
    default:
      throw new Error()
  }
}
  const initialState = {
    email: '',
    password: '',
    valid: false,
  }
  const [state, dispatch] = React.useReducer(reducer, initialState)

输入此内容以满足错误的正确方法是什么?

反应16.8.1 打字稿 3.3.1

应该是(被固定) adding ...state到回报,就像

  switch (action.type) {
    case 'email':
      const email = action.value
      const valid = Users.find(e => e === email) ? true : false

      return {
        ...state,
        email,
        valid,
      }
    case 'password':
      const password = action.value
      return {
        ...state,
        password,
      }
    default:
      throw new Error()
  }

另外 - 正如 @madflanderz 所建议的,将 IState 设置为减速器的预期返回值有助于捕获此类问题。


我也为这个问题苦苦挣扎。在我看来,防止错误的最佳方法是将状态接口添加为减速器的返回类型。然后您会在减速器内看到类型错误,而不是在 useReducer 行上。

像这样:

function reducer(state: IState, action: IFluxAction): IState {
   // reducer code
   // type errors are visible here 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

useReducer 的initialState 类型为never? 的相关文章

随机推荐

  • 如何解决 chrome 自动完成与 vuetify 中标签重叠的问题?

    当尝试使用以下命令创建登录表单时outlinedVutify 中的文本字段 chrome 自动完成功能与labels
  • 如何创建带有圆角的 NSImageView?

    目前我想创建一个圆角 NSImageView 我是新手 怎么做 我不知道这是否有效 所以请尝试一下 我们会祈祷 在 iPhone 上您可以使用CALayer of any UIView the NSViewiOS 中的对应部分 以获得圆角
  • Autofac 与 MVC4:控制器没有默认构造函数

    我一直在 MVC3 中使用 Autofac 并且喜欢它 现在我正在尝试用MVC4来实现它 我通过包管理器控制台安装了 Autofac MVC4 和 Autofac WebApi 的预发行版本 Install Package Autofac
  • JqPivot和ajax加载数据

    Can someone post a demo or a piece of code to exemplify how to use jqpivot and loading data using ajax Thank you 我建议您检查免
  • 更改 C# Parallel.For 循环的增量值

    我想使用 TPL 将每次传递将迭代器增加 2 的 for 循环转换为并行 For 循环 数据不依赖于顺序或以任何方式受到限制 但我只想处理源数组的每个其他元素中的数据 即下面代码中的 Datalist 因此需要增加 2 我的 For 循环
  • 如何在 JSF 中关闭浏览器时使会话失效

    任何人都可以帮助我在用户关闭浏览器时使会话无效 每当用户关闭浏览器时 JSF 中的会话就会自动失效 Thanks 下面的链接可能会有所帮助 浏览器窗口关闭事件 https stackoverflow com questions 163195
  • iOS 上的 Mobile Safari 在大页面上崩溃

    我遇到一个问题 当页面变得太大时 使用 jQuery 加载和操作 DOM 时 Mobile Safari 会崩溃 我在 iPhone 和 iPad 上都遇到同样的问题 排除移动页面故障以查找错误的最佳方法是什么 是否存在可能导致 Mobil
  • 每次运行后,Xcode 6 都会在 iOS8 模拟器中不断重命名我的应用程序目录。

    我正在运行 Xcode 6 Beta 5 但自从第一个 Beta 版以来这种情况就一直发生 每次运行后 我的应用程序在模拟器中的目录都会被重命名 我花了一段时间才弄清楚这一点 我用它来获取文档的目录引用 NSString folder NS
  • 当我尝试卸载包含 NSSM 服务的软件时,失败

    对于以下安装程序包 我有服务XXXService当我安装我的包时 成功安装并运行 但卸载失败并出现错误并恢复 我怀疑该服务仍在运行 阻止删除main exe file 请帮助完成卸载工作 重现此错误的完整最小源是可用的 https gith
  • 将 R 与 php 连接

    我正在尝试以 php localhost 方式运行 R 代码 所以我按照这个例子 https www r bloggers com integrating php and r https www r bloggers com integra
  • GGPlot2 中的 NLS 回归,绘制 y=Ax^b 趋势线误差

    我正在尝试在一组 3 个数据点上拟合基本幂趋势线 就像您在 Excel 中模拟 y Ax b 函数一样 我有一个非常简单的数据集加载到 LCurve data 中 如下所示 MDPT 4 10 9 51 6 曲线下面积 287069 4 2
  • Matlab 中的分组箱线图:通用函数

    在看到 SO 中这篇很棒的文章后 matlab绘制分组箱线图最有效的方法 https stackoverflow com questions 15971478 most efficient way of drawing grouped bo
  • 更改 bootstrap vue 选项卡标题的标题颜色

    I m using bootstrap vue js to create a tab The result is like this 我只想更改选项卡标题颜色 因为它使用我项目中的默认颜色 并来自 bootstrap vue js 官方链接
  • 提交时避免 PHP 中的竞争条件:请不要多次单击“提交”!

    不久前 在线应用程序曾经说过 不要多次点击提交 现在已经消失了 对吧 例如 在 PHP 中如何防范这种情况 我使用的一个解决方案是在会话中放置一个变量 这样您就不能每 10 秒多次提交到一个页面 这样数据库工作就完成了 因此可以进行正常检查
  • Automapper 地图自定义集合

    Hello 我有一个看起来像这样的列表 public class PagedList
  • 在 PHP 和 JavaScript 之间共享常量 [重复]

    这个问题在这里已经有答案了 可能的重复 将 PHP 字符串传递给 Javascript 变量 并转义换行符 https stackoverflow com questions 168214 pass a php string to a ja
  • 确保立即选择 iframe

    这可能是一个愚蠢的问题 但是当我使用 iframe 时 如果您单击该框架 则可以使用特定方面 由 iframe 使用的 html 文件中的事件侦听器控制 如果您在 iframe 外部单击 则会失去对这些控件和事件侦听器的访问权限 有没有办法
  • PHP 重写 url 并保留发布的数据

    我有一个 php 服务器 我想重写传入的 url 由于传入请求是发布请求 我还希望发布的数据在新的网址上传输 我已经成功地使用以下重写规则重定向网址 RewriteRule test http localhost index php dat
  • Android:将 RGB888 转换为 Y800

    我正在从 vuforia 获取作为 RGB888 bytes 捕获的图像 我想将其传递给 zbar 它期望格式为 Y800 我怎样才能做到这一点 i tried Image barcode new Image width height RG
  • useReducer 的initialState 类型为never?

    初始状态有错误 类型为 email string 的参数密码 字符串 有效 布尔值 不可分配给 never 类型的参数 ts 2345 function reducer state IState action IFluxAction con