propTypes are not created if you assign props from a pre-defined type or if you import types from another file
See original GitHub issueFor example the following won’t work:
const Link = ({ href, children }: Props) =>
<a href={href}>children</a>
type Props = {
href: string,
children: any,
}
whereas this will:
const Link = ({ href, children }: {
href: string,
children: any,
}) =>
<a href={href}>children</a>
In addition, if you import types, from other files, the type won’t in fact be created in the other file. There will be nothing there. That problem becomes even worse if you’re using types imported from packages, e.g. the react-redux
flowtypes, eg if you’re doing something like the following you’re screwed:
import React from 'react'
import { connect } from 'react-redux'
import type { Store } from 'redux'
import type { Connector } from 'react-redux'
import type { Href } from './hrefToUrl' // no flow type will be converted to a propType in the other file
type OwnProps = {
href: Href,
children: any,
}
type Props = {
dispatch: Function,
} & OwnProps // doubt an intersection will work
type Context = {
store: Store,
}
const Link = ({ href, children }: Props) => // Props wont work cuz its not defined here
<a href={href} onPress={(e) => e.preventDefault() || dispatch({ type: 'FOO' })}>{children}</a>
const connector: Connector<OwnProps, Props> = connect() // yea right, not happening
export default connector(Link)
So in short, any serious code using redux (or any 3rd party types, or any of your own imported files) unfortunately won’t work with this otherwise great package.
Issue Analytics
- State:
- Created 7 years ago
- Reactions:2
- Comments:9 (3 by maintainers)
Top Results From Across the Web
Typechecking With PropTypes - React
To run typechecking on the props for a component, you can assign the special propTypes property: import PropTypes from 'prop-types'; class Greeting extends ......
Read more >How to validate React props using PropTypes - LogRocket Blog
Learn how to validate props with React PropTypes, React's internal mechanism for adding type checking to component props.
Read more >reactjs - How to import a React proptypes typed component as ...
As a POC I can import a .JSX component with proptypes into a .TSX component without adding typing such as :any . I...
Read more >[@types/prop-types] PropTypes.shape throws errors when ...
I tried using the @types/prop-types package and had problems. ... Type 'string | null | undefined' is not assignable to type 'string ...
Read more >How to Use PropTypes in React - freeCodeCamp
We can use PropTypes to validate any data we are receiving from props. But before using it we will have to import it...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@max-mykhailenko supporting flow-typed would be a ton of extra code and require filesystem access, which isn’t good in a babel plugin.
If you implement it in a fork, I’ll put a link in the readme, but I don’t want to maintain that feature.
By the way, this issue still occurs if you don’t put the flow types before they are used. Typically with Flow it doesn’t matter what order the types come in (they are hoisted), but with the babel plugin, they have to be defined before used.
Not the biggest issue, but worth mentioning. The previous fix for intersections fixed the larger problem.