DEV Community

Discussion on: Notes on TypeScript: Inferring React PropTypes

 
busypeoples profile image
A. Sharif

I think the problem in this specific case is tied to using forwardRef. Will try to find out in more detail , but I think forwardRef drops any default props.

Thread Thread
 
eriksjaastad profile image
Erik Sjaastad

Hrm. Removing isRequired and the defaultProps removes the TS error also. Even adding in React.FC<Props> it still works without isRequired. I think I've narrowed it down to incorporating forwardRef, as soon as that is added it seems to lose it's connection to the given prop value and default props codesandbox.io/s/nostalgic-pascal-...

Thread Thread
 
busypeoples profile image
A. Sharif

Yes, I think the problem is within forwardRef in this case. It drops the defaultProps.

Thread Thread
 
eriksjaastad profile image
Erik Sjaastad

You have no idea how long I've been ignoring narrowing down THAT problem! I've been looking at everything else except that. And finding that out, just lead me to this :D github.com/facebook/flow/issues/74...
Thank you soooo much! You've been a life saver!

Thread Thread
 
eriksjaastad profile image
Erik Sjaastad

It turns out that forwardRef was just another one of the issues. If you add a method to the name prop like name.toUpperCase() TS will argue that the value can be null even when you give it the default value and it doesn't complain when implementing <DisplayName />. This describes the issue in stateless functions with defaultProps. It doesn't look like this has really been solved. github.com/microsoft/TypeScript/is...
Hotell's solution does work thought codesandbox.io/s/fast-pond-lhno0

Thread Thread
 
busypeoples profile image
A. Sharif

Thanks for the clarification!