我们为我自己的项目提供了一个反应组件库。它是用 js 编写的(自定义材料-ui 库;)))。我的任务是将组件从 js 一个一个迁移到 ts。
这是组件的示例:
import * as React from 'react';
import classNames from 'classnames';
import Typography from '../Typography';
import styles from './link.scss';
type LinkPropTypes = {
className: string,
component: React.ElementType,
children: React.ReactNode,
color: 'error' | 'inherit' | 'initial' | 'primary' | 'secondary' | 'text-primary' | 'text-secondary',
underline: 'none' | 'always' | 'hover',
};
const Link = React.forwardRef<HTMLElement, LinkPropTypes>((props, ref) => {
const {
color,
component,
underline ,
className: classNameProp,
...restProps
} = props;
const className = classNames(
styles[`link--underline-${underline}`],
classNameProp,
);
return (
<Typography
className={className}
color={color}
component={component}
ref={ref}
{...restProps}
/>
);
});
Link.displayName = 'Link';
Link.defaultProps = {
component: 'a',
color: 'primary',
underline: 'hover'
} ;
export default Link;
当我尝试在主应用程序中使用这个组件时,它给出了这样的错误
<Link>asdasd</Link>
Type '{ children: string; }' is missing the following
properties from type 'PropTypes': component, color, underline
但是当我通过所有道具时,它可以正常工作:
<Link color="primary" underline="hover" component="a">asdasd</Link>
它要求提供所需的参数,例如颜色、组件和下划线。即使它们在 defaultProps 中。
我试图在解构组件中的道具时分配 defaultProps :
const {
color = "primary",
component = "a",
underline ="hover",
className: classNameProp,
...restProps
} = props;
但是故事书文档无法识别这些 defaultProps。
我不想仅为故事书文档复制 defaultValues。
所以我的问题是,有没有办法在打字稿中通过 Component.defaultProps 分配 defaultValues?