微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

输入 'Map<String, Pod[]> | undefined' 不能分配给类型 '{ [key: string]: Pod[]; }'

如何解决输入 'Map<String, Pod[]> | undefined' 不能分配给类型 '{ [key: string]: Pod[]; }'

我一直在尝试使用映射来存储来自两个不同提供商的代理的响应,以便更容易地查找它们,因为它们将存储在哈希映射中。例如:

let proxies = new Map<String,Pod[]>();
proxies.get("my-provider");

但是,当我尝试使用带有打字稿的 react useState 钩子将数据呈现到页面时,显然类型不同。我的类型定义如下:

export interface Pod {
  pod: number;
  timestamp: string; <- ISO UTC timestamp
  status: string; <-- 200 OK,4xx,5xx etc.
}

export interface PodProvider {
  provider: {
    [key: string]: Pod[]; <- indexed map containing a list
  }
}

我有一个 useEffect 钩子,它在组件加载时调用一个方法来探测代理,然后将响应添加到哈希映射以及一个唯一的键来标识所述代理的提供者,如下所示:

const [response,setResponse] = useState<Map<String,Pod[]>>();

useEffect(() => {
  const goprobe = async () => {
    const results = await probe(provider1Proxies);
    proxies.set("provider1",results);
    setResponse(proxies);
  }
  goprobe();
},[]);

最后,如何将状态渲染到 DOM 的逻辑在一个单独的组件中提供,如下所示:

export const Logger: React.FC<PodProvider> = ({ provider },identifier: string) => ( <- notice the type used here
  <React.Fragment>
    <Table size="small">
      <Caption>
        <XL>Log Output</XL>
      </Caption>
      <Head>
        <HeaderRow>
          <HeaderCell>Timestamp</HeaderCell>
          <HeaderCell>Pod</HeaderCell>
          <HeaderCell>Status</HeaderCell>
        </HeaderRow>
      </Head>
      <Body>
        {
          provider[identifier].flatMap((response,key) => {
            return (
              <Row key={key}>
                <Cell>{response.pod}</Cell>
                <Cell>{response.status}</Cell>
                <Cell>{response.timestamp}</Cell>
              </Row>
            );
          })
        }
      </Body>
    </Table>
  </React.Fragment>
);

我的问题是我做错了什么?为什么 Map 和 '{ [key: string]: Pod[]; } 不同的?如何修复代码以按预期执行?

谢谢:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?