[已解决]
我正尝试将一个项目从JavaScript移植到TypeScript,但遇到了一部分代码,其中使用style()创建了Material UI的List组件的修改版本。我面临的问题是,当我尝试将其与属性“component”一起使用时,TypeScript会抱怨它没有这样的属性。我想我需要进行某种类型Assert,但我不确定
代码如下所示:
样式列表
const StyledList = styled(List)<ListProps>({
'& .MuiListItemButton-root': {
paddingLeft: 24,
paddingRight: 24,
},
'& .MuiListItemIcon-root': {
minWidth: 0,
marginRight: 16,
},
'& .MuiSvgIcon-root': {
fontSize: 20,
},
});
利用它
<StyledList component="nav" disablePadding>
</StyledList>
错误
Type '{ children: (Element | Element[])[]; component: string; disablePadding: true; }' is not assignable to type 'IntrinsicAttributes & { children?: ReactNode; classes?: Partial<ListClasses> | undefined; dense?: boolean | undefined; disablePadding?: boolean | undefined; subheader?: ReactNode; sx?: SxProps<...> | undefined; } & CommonProps & Omit<...> & MUIStyledCommonProps<...>'.
Property 'component' does not exist on type 'IntrinsicAttributes & { children?: ReactNode; classes?: Partial<ListClasses> | undefined; dense?: boolean | undefined; disablePadding?: boolean | undefined; subheader?: ReactNode; sx?: SxProps<...> | undefined; } & CommonProps & Omit<...> & MUIStyledCommonProps<...>
如果删除component="nav"
,一切正常,但我想知道为什么它说,如果List
组件确实有这个属性不存在。我猜styled()给了我一些不同类型的对象,或者我需要让TypeScript知道它。
1条答案
按热度按时间juud5qan1#
typescript对你大喊大叫的原因是因为
component
prop没有在ListProps
接口中定义,所以你可以在这里添加它。