【问题标题】:items.map: Parameter 'item' implicitly has an 'any' typeitems.map:参数“item”隐式具有“any”类型
【发布时间】: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

标签: reactjs typescript ionic-framework react-typescript ionic-react


【解决方案1】:

这很简单,你必须将你的输入括在括号中

items.map((item: any) => {})

您可以做的另一件事是进入您的tsconfig.json 文件并将noImplicityAny 设置为false。如果某些内容具有隐式 any 类型,这将阻止 TypeScript 对您大喊大叫。

【讨论】:

  • 我读过关于 noImplicitAny 标志的信息,但我想我会保留它,以迫使我学习这样的东西。
【解决方案2】:

items.map((item: any) =&gt; { ...

可能问题也出在 useLocalStorage 类型中,也许您必须为初始状态创建一个类型/接口

useLocalStorage&lt;MyLocalStorageType&gt;( ...

这样就可以充分发挥TS的威力了

【讨论】:

  • 感谢您的回复。自从他第一次发布以来,我将@raja 标记为正确答案。
  • 没问题的朋友
【解决方案3】:

您在声明类型时缺少箭头函数中的参数:

{items.map((item: any) => {
              return (

【讨论】:

  • 感谢您的回复。自从他第一次发布以来,我将@raja 标记为正确答案。
猜你喜欢
  • 2018-09-23
  • 2018-09-25
  • 2017-11-30
  • 2021-05-31
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
相关资源
最近更新 更多