Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
560 views
in Technique[技术] by (71.8m points)

类型“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”。

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share

1.2m questions

2.1m answers

5 comments

56.5k users

...