我正在尝试通过为自己创建一个简单的应用程序来学习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的类型?
谢谢
4条答案
按热度按时间dxxyhpgq1#
很简单,你必须把你的输入括在括号里
你可以做的另一件事是进入你的
tsconfig.json
文件并将noImplicityAny
设置为false。这将阻止TypeScript在某些内容具有隐式any
类型时对您大喊大叫。ebdffaop2#
items.map((item: any) => { ...
可能问题也出在useLocalStorage类型上,也许你必须为你的初始状态创建一个类型/接口
useLocalStorage<MyLocalStorageType>( ...
这样你就可以使用TS的全部功能
7y4bm7vi3#
声明类型时,箭头函数中缺少括号:
i86rm4rw4#
最好在set函数上输入:
功能外:
然后,您可以:
这样,typescript将知道每个项目的键入者,并且您可以使用intellisense访问每个项目属性。