TypeScript4.4.4中Ant Design Rate组件自定义字符失效求助
解决Ant Design 4.24.5 Rate组件自定义图标函数在TypeScript下的类型错误
方案1:使用类型断言绕过类型检查
修改character属性的函数,通过类型断言让TypeScript认可它符合React.ReactNode类型:
import React from 'react'; import { FrownOutlined, MehOutlined, SmileOutlined } from '@ant-design/icons'; import { Rate } from 'antd'; const customIcons: Record<number, React.ReactNode> = { 1: <FrownOutlined />, 2: <FrownOutlined />, 3: <MehOutlined />, 4: <SmileOutlined />, 5: <SmileOutlined />, }; const App: React.FC = () => ( <> <Rate defaultValue={3} character={(({ index }: { index: number }) => customIcons[index + 1]) as React.ReactNode} /> </> ); export default App;
方案2:升级Ant Design版本
将Ant Design升级到4.25.0及以上版本,该版本修复了Rate组件character属性的类型定义,正式支持函数类型(props: { index: number }) => React.ReactNode,升级后无需额外修改即可正常运行你的原始代码。
问题根源
Ant Design 4.24.5的Rate组件类型定义存在缺陷:官方文档明明支持用函数返回自定义图标,但TypeScript类型文件中仅将character限制为React.ReactNode,没有包含函数类型,导致类型检查报错。实际运行时Ant Design是支持该函数用法的,因此类型断言可以临时解决问题,升级版本则能彻底修复类型定义的问题。
内容的提问来源于stack exchange,提问作者Zawwar Ahmed
相关产品推荐
相关产品推荐

