propTypes are optional for native components

Summary:
We plan to migrate native components like View, Text, and Image to be typed with Flow instead of propTypes so that we can better enforce our usages.

This change makes it so that *if* propTypes are defined they must cover the native props. However, if they aren't specified, the validation doesn't occur.

Eventually, the prop validation should occur via codegen that generates an interface the native component must implement from the flow types defined in JS.

Reviewed By: yungsters

Differential Revision: D7203649

fbshipit-source-id: a8095aa46807ce03272e2962289e8f5705b422b9
This commit is contained in:
Eli White 2018-03-08 15:43:23 -08:00 committed by Facebook Github Bot
parent 49396aa78d
commit dbdf43b428
1 changed files with 2 additions and 2 deletions

View File

@ -17,7 +17,7 @@ export type ComponentInterface =
| { | {
name?: string, name?: string,
displayName?: string, displayName?: string,
propTypes: Object, propTypes?: Object,
}; };
function verifyPropTypes( function verifyPropTypes(
@ -41,7 +41,7 @@ function verifyPropTypes(
componentInterface.propTypes; componentInterface.propTypes;
if (!propTypes) { if (!propTypes) {
throw new Error('`' + componentName + '` has no propTypes defined`'); return;
} }
var nativeProps = viewConfig.NativeProps; var nativeProps = viewConfig.NativeProps;