Ionic items.map:参数“item”隐式具有“any”类型

2q5ifsrm  于 2023-09-28  发布在  Ionic
关注(0)|答案(4)|浏览(193)

我正在尝试通过为自己创建一个简单的应用程序来学习Ionic React with 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 (

如何声明item的类型?
谢谢

dxxyhpgq

dxxyhpgq1#

很简单,你必须把你的输入括在括号里

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

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

ebdffaop

ebdffaop2#

items.map((item: any) => { ...
可能问题也出在useLocalStorage类型上,也许你必须为你的初始状态创建一个类型/接口
useLocalStorage<MyLocalStorageType>( ...
这样你就可以使用TS的全部功能

7y4bm7vi

7y4bm7vi3#

声明类型时,箭头函数中缺少括号:

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

i86rm4rw4#

最好在set函数上输入:
功能外:

interface ItemType {
id: number;
value: string;
}

然后,您可以:

const [items, setItems] = useLocalStorage<ItemType[]>([{ id: 0, value: 'Item 0'...

这样,typescript将知道每个项目的键入者,并且您可以使用intellisense访问每个项目属性。

相关问题