You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+TypeScript出现Property 'users' does not exist on type 'never'报错求助

报错原因

这个报错核心是 TypeScript 把你从 useAppSelector 拿到的 currVote 变量推导成了 never 类型,never 类型不允许访问任何属性,所以才会抛出找不到 users 属性的错误,和你写的运行时判断逻辑无关。

导致类型推导成 never 通常是以下几个原因:

  • 你定义的 IVote 接口没有声明 users 字段,或者字段类型定义错误
  • 你编写 Redux slice 时没有给状态明确标注类型,TypeScript 只从初始值 null 错误推导了状态类型,甚至因为 reducer 逻辑的问题把状态类型收窄成了 never
  • RootState 或者 useAppSelector 的类型定义错误,没有正确关联你的 Redux store 结构
解决步骤
  1. 首先确认 IVote 接口定义正确,包含符合要求的 users 字段:
interface IUser {
  name: string
  // 其他用户相关字段
}
interface IVote {
  users: IUser[]
  // 其他投票相关字段
}
  1. 检查 Redux slice 的定义,给状态明确标注类型,避免 TypeScript 错误推导:
import { createSlice, PayloadAction } from '@reduxjs/toolkit'

const initialState: IVote | null = null

const voteSlice = createSlice({
  name: 'vote',
  // 这里明确标注 state 类型,避免 TypeScript 只从 null 推导类型
  initialState: initialState as IVote | null,
  reducers: {
    setVoteData: (state, action: PayloadAction<IVote>) => {
      return action.payload
    }
  }
})
  1. 确认 Store 配置文件中正确导出了 RootState 类型:
// store.ts
import { configureStore } from '@reduxjs/toolkit'
import voteReducer from './voteSlice'

export const store = configureStore({
  reducer: {
    vote: voteReducer
  }
})

export type RootState = ReturnType<typeof store.getState>
export type AppDispatch = typeof store.dispatch
  1. 确认自定义 Hook useAppSelector 是基于 RootState 定义的:
// hooks.ts
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
import type { RootState, AppDispatch } from './store'

export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
export const useAppDispatch = () => useDispatch<AppDispatch>()

完成以上配置后,你原来的组件代码不需要做任何修改,TypeScript 就能正确识别 if(currVote) 分支里的 currVote 是 IVote 类型,可以正常访问 users 字段遍历渲染。

为什么你之前的尝试没有生效

  • 把初始值改成 any 没用:因为 RootState 中 vote 字段的类型已经被 TypeScript 错误推导为 never,初始值的类型标注优先级低于 slice 和 store 的全局类型推导
  • 加非空断言、可选链没用:never 类型属于 TypeScript 的底层类型,任何对 never 类型的属性访问都会直接报错,和运行时的存在性判断无关

内容的提问来源于stack exchange,提问作者Eldar Tailov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:08