首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型的参数'(prevState: Stock[]) => (Stock AC.26 Stock[])[]‘不能分配给'SetStateAction<Stock[] _x[]>类型的参数。

类型的参数'(prevState: Stock[]) => (Stock AC.26 Stock[])[]‘不能分配给'SetStateAction<Stock[] _x[]>类型的参数。
EN

Stack Overflow用户
提问于 2022-07-19 05:44:13
回答 2查看 129关注 0票数 0

我正在学习TypeScript,我得到了下面的错误。我无法理解错误提供的提示。我在没有TypeScript的情况下编写了这段代码,它的工作原理就像魅力一样。如何解决这个问题?

错误详细信息:

代码语言:javascript
运行
复制
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)

代码:

代码语言:javascript
运行
复制
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;
    });
  };
};
EN

回答 2

Stack Overflow用户

发布于 2022-07-19 05:51:57

方法setStockCollection应该按照下面的方式被删除。然后它将在TypeScript中显示没有错误。

代码语言:javascript
运行
复制
         setStockCollection((prevState:Stock[]) => {
            let result:Stock[] = [ ...prevState, ...stockFromServer];
            return result;
        });
票数 0
EN

Stack Overflow用户

发布于 2022-07-19 07:33:37

您忘记了扩展stockFromServer数组:

代码语言:javascript
运行
复制
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;
    });
  };
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73031690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档