![](/img/trans.png)
[英]Typescript error when implementing Marker in google-map-react api
[英]TypeScript gives error when calling .size on a map in React
我正在编写一个 React 组件,我在其中将地图作为道具传递并稍后读取它的大小。 当我使用 TypeScript 键入地图时,我没有收到任何错误,但是当我在地图上调用.size
时出现错误。 此外,当我尝试映射该数组时,我也会收到错误消息。
映射本身包含键和值对,它们都是字符串。
代码:
import * as Styled from './assignments-list.styles'
type TMap<T> = {
[index: string] : T
}
type TAssignmentsListProps = {
assignments: TMap<string>
}
const AssignmentsList = ({assignments}: TAssignmentsListProps) => {
return (
<Styled.AssignmentsList>
<Styled.Header>
Assignments
</Styled.Header>
{
(assignments && assignments.size !== 0) ? // error here
<Styled.ListFiles>
{
Array.from(assignments).map(([name, url]) => { // error here
return (
<li key={name}>
<Styled.ListItemWrapper>
<Styled.FileName>
{name}
</Styled.FileName>
<Styled.RemoveFile>
View
</Styled.RemoveFile>
</Styled.ListItemWrapper>
</li>
)
})
}
</Styled.ListFiles> :
<Styled.BodyText>None</Styled.BodyText>
}
</Styled.AssignmentsList>
)
}
export default AssignmentsList
有任何想法吗?
我不明白assignments
的真正类型是什么
这里错误assignments.size !== 0
因为您试图将字符串与数字进行比较,这总是错误的。
如果可以固定,按固定类型
type TMap<T> = {
[index: string]: T
} & {
size: number
}
或者
type TMap<T> = Map<string, T>
或者,如果它是字符串映射,您可以使用
assignments && Object.keys(assignments).length !== 0
根据实际地图类型将地图转换为数组。 如果它Map
那么Array.from
应该可以工作
如果它映射字符串,您可以使用How to convert an Object {} to an Array [] of key-value pairs in JavaScript
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.