items.map:参数“item”隐式具有“any”类型
Posted
技术标签:
【中文标题】items.map:参数“item”隐式具有“any”类型【英文标题】:items.map: Parameter 'item' implicitly has an 'any' type 【发布时间】:2021-12-24 16:20:30 【问题描述】:我正在尝试通过为自己创建一个简单的应用程序来学习 Ionic React 和 Typescript。
此时'我正在尝试从数组中动态填充 IonSegment,相关代码如下所示:
const [items, setItems] = useLocalStorage([ id: 0, value: 'Item 0' , id: 1, value: 'Item 1' , id: 1, value: 'Item 1' ], [ id: 0, value: 'An Error Occurred' ]);
....
<IonSegment color="brand" onIonChange= ....... value=sensor id="segSensor">
items.map(item =>
return (
<IonSegmentButton key=item.id>
<IonLabel>item.value</IonLabel>
</IonSegmentButton>
)
)
</IonSegment>
编译失败,输出如下:
参数“item”隐含一个“any”类型.ts(7006)
所以,我知道该项目需要声明一个类型,但我尝试了以下但没有成功:
items.map(item:any =>
return (
items.map(<any>item =>
return (
如何声明项目的类型?
谢谢
【问题讨论】:
您使用的是哪个useLocalStorage
钩子? This one?它是否提供 TypeScript 类型?
type Item = id: number, value: string ,用它代替any
【参考方案1】:
这很简单,你必须将你的输入括在括号中
items.map((item: any) => )
您可以做的另一件事是进入您的tsconfig.json
文件并将noImplicityAny
设置为false。如果某些内容具有隐式 any
类型,这将阻止 TypeScript 对您大喊大叫。
【讨论】:
我读过关于 noImplicitAny 标志的信息,但我想我会保留它,以迫使我学习这样的东西。【参考方案2】:items.map((item: any) => ...
可能问题也出在 useLocalStorage 类型中,也许您必须为初始状态创建一个类型/接口
useLocalStorage<MyLocalStorageType>( ...
这样就可以充分发挥TS的威力了
【讨论】:
感谢您的回复。自从他第一次发布以来,我将@raja 标记为正确答案。 没问题的朋友【参考方案3】:您在声明类型时缺少箭头函数中的参数:
items.map((item: any) =>
return (
【讨论】:
感谢您的回复。自从他第一次发布以来,我将@raja 标记为正确答案。以上是关于items.map:参数“item”隐式具有“any”类型的主要内容,如果未能解决你的问题,请参考以下文章
错误:参数“e”隐式具有“任何”类型。 TS7006 - 反应打字稿