typescript object with()=>JSX.带类型脚本的元素

lyr7nygr  于 6个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(76)

我们正在添加TS支持,我很难获得此对象的正确类型:

export const Icons = {
    calendar: () => (
        <path d="m405 427c7 0 12-2 16-6 4-4 6-9 6-16l0-256c0-6-2-11-6-15-4-4-9-6-16-6l-42 0 0-43-64 0 0 43-86 0 0-43-64 0c-7 0-12 2-16 6-4 4-6 9-6 15l0 256c0 7 2 12 6 16 4 4 9 6 16 6z m-21-43l-256 0 0-149 256 0z" />
    ),
    edit: () => (
        <path d="m128 331l0 53 53 0 158 m252-146c5-5 5-14 0-20l-33-33c-6-5-15-5-20 0l-27 26 54 54z" />
    ), 
// ...many more
}

字符串
我已经manged让它与Record<string, () => JSX.Element>工作,但我想有所有不同的图标自动完成。
最后一个组件看起来像这样:

import { Icons } from './Icons';
    type SvgIconProps{
        iconName: string;
        disabled?: boolean;
        dataTest?: string;
    }
    export const SvgIcon = ({  iconName, disabled, dataTest}: SvgIconProps) => {
        const Icon = Icons[iconName];
        return (
            <svg
                {...{
                    disabled,
                    viewBox: '0 0 512 512',
                    'data-test': dataTest || 'svg-icon',
                }}>
                <Icon />
            </svg>
        );
    };


我试着这样得到钥匙:

type Keys = keyof typeof Icons;


然后给他们签名:

iconName: Keys;


但这并不给予我自动完成所有不同的图标,我们有。
例如,我使用这个组件<SvgIcon {...{iconName: "auto complete icon name plz"}} />
这个文件真的很旧了,我们正在转换为NextJs。也许有更好的方法来编写这样的组件?🤔
图片发给@丹尼尔:
x1c 0d1x的数据

eivnm1vs

eivnm1vs1#

丹尼尔有正确的awnser在第一个评论,我只是需要一些睡眠,以找出我仍然有Record<string, () => JSX.Element>的图标对象,并需要删除它。

相关问题