gpt4 book ai didi

reactjs - 使用 TypeScript 解构函数参数中的 props

转载 作者:行者123 更新时间:2023-12-03 13:23:19 28 4
gpt4 key购买 nike

我正在尝试在我的组件库中使用 TypeScript,并尝试将 React 中的无状态功能组件从 ES6/JavaScript 转换为 TypeScript。我想知道如何避免重复自己,同时仍然能够在传递参数时解构函数外部的 props。

我的组件当前如下所示:

const allowedColors = {
warning: "fa fa-exclamation",
info: "fa fa-info",
success: "fa fa-check",
danger: "fa fa-minus-circle"
};

const AlertIcon = ({ className, color, ...props }) => (
<FontAwesomeIcon
{...props}
iconClassName={allowedColors[color]}
className={classNames(`alert-icon-${color}`, className)}
aria-hidden="true"
data-ut="alert-icon"
/>
);

AlertIcon.propTypes = {
className: PropTypes.string,
color: PropTypes.oneOf(Object.keys(allowedColors)).isRequired
};

我该如何将其重构为 TypeScript?

最佳答案

type Color = "warning" | 'info'| 'success' | 'danger'

interface IProps {
color: Color
}

const AlertIcon = ({ className, color, ...props }: IProps) => { ... }

现在,当您使用 AlertIcon 时,color 属性必须为 Color 类型

要考虑传递 HTML 属性,例如 className,您可以这样做:

interface IProps extends HTMLAttributes<HTMLElement> { ... }

其中 HTMLElement 是您的元素类型。

关于reactjs - 使用 TypeScript 解构函数参数中的 props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52600056/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com