类型“any[]”的参数不能赋给类型“SetStateAction<never[]>”的参数??

const [list, setList] = useState([]);
// ...

function change(){
  const newList = list.map((_item: any) => {
      const __item = { ..._item };
      __item.name = 'hello world'
      return _item;
    });
    setList(newList); // 报错
  }

错误:

类型“any[]”的参数不能赋给类型“SetStateAction<never[]>”的参数。
  不能将类型“any[]”分配给类型“never[]”。
    不能将类型“any”分配给类型“never”。
阅读 20.5k
1 个回答
export function useTest() {
    const [list, setList] = useState<any[]>([]) // 这样写就不报错了,默认 [] 会被ts 推导成never[]类型
    function change() {
        const newList = list.map((item: any) => {
            return { ...item, name: 'hello world' }
        });
        setList(newList)
    }
    return change
}

// 下面是写明类型,而不是单纯的any[]
interface LOL {
    name: string
}

export function useTestLOL() {
    const [lol, setLoL] = useState<LOL[]>([])
    function change() {
        setLoL([...lol, { name: 'hello world' }])
    }
    return change
}

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏