I am writing react application with typescript. To provide a typed props I am using the code below.
type ScheduleBoxContentProps = {
desc: ReactNode,
lottie: LottieProps,
} & Partial<{className: string}>;
As you can see, I want className prop to be optional, but don't want to define defaultProps for it. In addition, desc and lottie props should be provided.
Is there any better way to define optional without default ?
Edit
I am sorry for the missing context.
If I use React.FC with my custom prop type then there is no problem. Because React.FC uses Partial inside of it.
type MyProps = {
className?: string;
}
// no erros and warnings
const Component: React.FC<MyProps> = (props) => <div />;
But I don't want my component to accept the children props. I want my component to alert when children props are coming. Thus I am using function components with code below.
// error: default value for className is not provided.
const Component = ({className}: MyProps) => <div className={className} />;
and it tells me that className's default value are defined. I should define it explicitly. Using code below.
Component.defaultProps = {className: ''};
IMO, it seems little bit unnecessary code, so I decided to use Partial on optional props.
type MyProps = Partial<{className: string}>;
Is there any better way to achieve this? Or, using defaultProps is the best practice?