Flow strict TouchableOpacity (#22146)

Summary:
Related to #22100

Enhance Flow types for TouchableOpacity specifying Touchable event types and TvParallaxPropertiesType.
I had to export TvParallaxPropertiesType from TVViewPropTypes file.
There are still 1 any left using requireNativeComponent and a dependency to `Touchable` that need to be addressed to turn Flow to strict mode.

I guess `Touchable` is a lot more work since there's no flow annotation and it's still good old Mixin.

- All flow tests succeed.

[GENERAL] [ENHANCEMENT] [TouchableOpacity.js] - Flow types
[GENERAL] [ENHANCEMENT] [TVViewPropTypes.js] - Export type
Pull Request resolved: https://github.com/facebook/react-native/pull/22146

Reviewed By: TheSavior

Differential Revision: D12927044

Pulled By: RSNara

fbshipit-source-id: c63d805699dd58e2fbc4fd1df4ee0c9f87e2336a
This commit is contained in:
Thomas BARRAS 2018-11-06 14:03:40 -08:00 committed by Facebook Github Bot
parent c03fc4087f
commit 69213eea95
2 changed files with 8 additions and 8 deletions

View File

@ -10,7 +10,7 @@
'use strict'; 'use strict';
type TVParallaxPropertiesType = $ReadOnly<{| export type TVParallaxPropertiesType = $ReadOnly<{|
/** /**
* If true, parallax effects are enabled. Defaults to true. * If true, parallax effects are enabled. Defaults to true.
*/ */

View File

@ -24,14 +24,14 @@ const flattenStyle = require('flattenStyle');
import type {Props as TouchableWithoutFeedbackProps} from 'TouchableWithoutFeedback'; import type {Props as TouchableWithoutFeedbackProps} from 'TouchableWithoutFeedback';
import type {ViewStyleProp} from 'StyleSheet'; import type {ViewStyleProp} from 'StyleSheet';
import type {TVParallaxPropertiesType} from 'TVViewPropTypes';
type Event = Object; import type {PressEvent} from 'CoreEventTypes';
const PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30}; const PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};
type TVProps = $ReadOnly<{| type TVProps = $ReadOnly<{|
hasTVPreferredFocus?: ?boolean, hasTVPreferredFocus?: ?boolean,
tvParallaxProperties?: ?Object, tvParallaxProperties?: ?TVParallaxPropertiesType,
|}>; |}>;
type Props = $ReadOnly<{| type Props = $ReadOnly<{|
@ -193,7 +193,7 @@ const TouchableOpacity = ((createReactClass({
* `Touchable.Mixin` self callbacks. The mixin will invoke these if they are * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are
* defined on your component. * defined on your component.
*/ */
touchableHandleActivePressIn: function(e: Event) { touchableHandleActivePressIn: function(e: PressEvent) {
if (e.dispatchConfig.registrationName === 'onResponderGrant') { if (e.dispatchConfig.registrationName === 'onResponderGrant') {
this._opacityActive(0); this._opacityActive(0);
} else { } else {
@ -202,16 +202,16 @@ const TouchableOpacity = ((createReactClass({
this.props.onPressIn && this.props.onPressIn(e); this.props.onPressIn && this.props.onPressIn(e);
}, },
touchableHandleActivePressOut: function(e: Event) { touchableHandleActivePressOut: function(e: PressEvent) {
this._opacityInactive(250); this._opacityInactive(250);
this.props.onPressOut && this.props.onPressOut(e); this.props.onPressOut && this.props.onPressOut(e);
}, },
touchableHandlePress: function(e: Event) { touchableHandlePress: function(e: PressEvent) {
this.props.onPress && this.props.onPress(e); this.props.onPress && this.props.onPress(e);
}, },
touchableHandleLongPress: function(e: Event) { touchableHandleLongPress: function(e: PressEvent) {
this.props.onLongPress && this.props.onLongPress(e); this.props.onLongPress && this.props.onLongPress(e);
}, },