We are using JavaScript (not TypeScript) to write our component library, and we have checkJs: true in our project's jsconfig.json file.
All of our components are functional components (no class components). When a component requires a ref, we use React.forwardRef.
An example of a component for the sake of this question; not an actual component, but shows how we write our components:
import React from 'react';
import { View } from 'react-native';
import propTypes from './propTypes';
export const Box = React.forwardRef(({ padding, children }, ref) => {
return (
<View ref={ref} style={{ padding }}>
{children}
</View>
);
});
Box.propTypes = propTypes;
However, this causes this "red squiggly line" error under the padding prop:
Property 'padding' does not exist on type '{ children?: ReactNode; }'.ts(2339)
And where the propTypes is assigned:
Type '{ padding: Requireable; }' has no properties in common with type 'WeakValidationMap<RefAttributes>'.ts(2559)
And when implementing this <Box> component, the red squiggly line appears under the component's name, and the error is:
Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes & RefAttributes'.ts(2559)
The code itself is valid, and changing checkJs to false resolves this, but we want to keep checkJs true.
What exactly are we doing wrong?