我正在学习TypeScript,我得到了下面的错误。我无法理解错误提供的提示。我在没有TypeScript的情况下编写了这段代码,它的工作原理就像魅力一样。如何解决这个问题?
错误详细信息:
Argument of type '(prevState: Stock[]) => (Stock | Stock[])[]' is not assignable to parameter of type 'SetStateAction<Stock[]>'.
Type '(prevState: Stock[]) => (Stock | Stock[])[]' is not assignable to type '(prevState: Stock[]) => Stock[]'.
Type '(Stock | Stock[])[]' is not assignable to type 'Stock[]'.
Type 'Stock | Stock[]' is not assignable to type 'Stock'.
Type 'Stock[]' is missing the following properties from type 'Stock': ticker, name, price, change, and 2 more.ts(2345)
代码:
export interface Stock {
ticker: string;
name: string;
price: string;
change: string;
percentChange: string;
id: string;
}
export const PlayGroundWebsockets: React.FunctionComponent<unknown> = (
props: unknown
) => {
let stockFromServer: Stock[] = [];
const [stockCollection, setStockCollection] = useState<Stock[]>([]);
const displayStocks = () => {
setStockCollection((prevState: Stock[]) => { // <- Error from here
let result = [...prevState, stockFromServer];
return result;
});
};
};
发布于 2022-07-19 05:51:57
方法setStockCollection应该按照下面的方式被删除。然后它将在TypeScript中显示没有错误。
setStockCollection((prevState:Stock[]) => {
let result:Stock[] = [ ...prevState, ...stockFromServer];
return result;
});
发布于 2022-07-19 07:33:37
您忘记了扩展stockFromServer
数组:
export const PlayGroundWebsockets: React.FunctionComponent<unknown> = (
props: unknown
) => {
let stockFromServer: Stock[] = [];
const [stockCollection, setStockCollection] = useState<Stock[]>([]);
const displayStocks = () => {
setStockCollection((prevState: Stock[]) => {
// let result = [...prevState, stockFromServer]; <- Before
let result = [...prevState, ...stockFromServer];
return result;
});
};
};
https://stackoverflow.com/questions/73031690
复制相似问题