Skip to content

Commit cbab010

Browse files
chore(types): enable exactOptionalPropertyTypes
1 parent 156d957 commit cbab010

16 files changed

Lines changed: 185 additions & 143 deletions

src/components/safe-area/SafeAreaView.types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export type Edge = 'top' | 'right' | 'bottom' | 'left';
88
export type InsetType = 'all' | 'system' | 'interface';
99

1010
export interface SafeAreaViewProps extends ViewProps {
11-
edges?: Readonly<Partial<Record<Edge, boolean>>>;
11+
edges?: Readonly<Partial<Record<Edge, boolean>>> | undefined;
1212
// Android-only
13-
insetType?: InsetType;
13+
insetType?: InsetType | undefined;
1414
}

src/components/tabs/host/useTabsHost.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ type TabsHostPlatformNativeComponentProps =
1212

1313
interface TabsHostConfig<T> {
1414
componentNodeRef: React.RefObject<React.Component<T> | null>;
15-
controlNavigationStateInJS?: boolean;
16-
onNativeFocusChange?: (
17-
event: NativeSyntheticEvent<NativeFocusChangeEvent>,
18-
) => void;
15+
controlNavigationStateInJS?: boolean | undefined;
16+
onNativeFocusChange?:
17+
| ((event: NativeSyntheticEvent<NativeFocusChangeEvent>) => void)
18+
| undefined;
1919
}
2020

2121
export function useTabsHost<T extends TabsHostPlatformNativeComponentProps>({

src/components/tabs/screen/TabsScreen.android.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,10 @@ function parseIconsToNativeProps(
137137
icon: PlatformIconAndroid | undefined,
138138
selectedIcon: PlatformIconAndroid | undefined,
139139
): {
140-
imageIconResource?: ImageResolvedAssetSource;
141-
drawableIconResourceName?: string;
142-
selectedImageIconResource?: ImageResolvedAssetSource;
143-
selectedDrawableIconResourceName?: string;
140+
imageIconResource?: ImageResolvedAssetSource | undefined;
141+
drawableIconResourceName?: string | undefined;
142+
selectedImageIconResource?: ImageResolvedAssetSource | undefined;
143+
selectedDrawableIconResourceName?: string | undefined;
144144
} {
145145
const parsedIcon = parseIconToNativeProps(icon);
146146
const parsedSelectedIcon = parseIconToNativeProps(selectedIcon);
@@ -155,8 +155,8 @@ function parseIconsToNativeProps(
155155
}
156156

157157
function parseIconToNativeProps(icon: PlatformIconAndroid | undefined): {
158-
imageIconResource?: ImageResolvedAssetSource;
159-
drawableIconResourceName?: string;
158+
imageIconResource?: ImageResolvedAssetSource | undefined;
159+
drawableIconResourceName?: string | undefined;
160160
} {
161161
if (!icon) {
162162
return {};

src/components/tabs/screen/TabsScreen.ios.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,13 @@ function parseIconsToNativeProps(
159159
icon: PlatformIconIOS | undefined,
160160
selectedIcon: PlatformIconIOS | undefined,
161161
): {
162-
imageIconResource?: ImageResolvedAssetSource;
163-
drawableIconResourceName?: string;
164-
iconType?: IconType;
165-
iconImageSource?: ImageSourcePropType;
166-
iconResourceName?: string;
167-
selectedIconImageSource?: ImageSourcePropType;
168-
selectedIconResourceName?: string;
162+
imageIconResource?: ImageResolvedAssetSource | undefined;
163+
drawableIconResourceName?: string | undefined;
164+
iconType?: IconType | undefined;
165+
iconImageSource?: ImageSourcePropType | undefined;
166+
iconResourceName?: string | undefined;
167+
selectedIconImageSource?: ImageSourcePropType | undefined;
168+
selectedIconResourceName?: string | undefined;
169169
} {
170170
const parsedIcon = parseIconToNativeProps(icon);
171171
const parsedSelectedIcon = parseIconToNativeProps(selectedIcon);
@@ -195,9 +195,9 @@ function parseIconsToNativeProps(
195195
}
196196

197197
function parseIconToNativeProps(icon: PlatformIconIOS | undefined): {
198-
iconType?: IconType;
199-
iconImageSource?: ImageSourcePropType;
200-
iconResourceName?: string;
198+
iconType?: IconType | undefined;
199+
iconImageSource?: ImageSourcePropType | undefined;
200+
iconResourceName?: string | undefined;
201201
} {
202202
if (!icon) {
203203
return {};

src/components/tabs/screen/useTabsScreen.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ type TabsScreenPlatformNativeComponentProps =
1111

1212
interface TabsScreenConfig<T> {
1313
componentNodeRef: React.RefObject<React.Component<T> | null>;
14-
onDidAppear?: TabsScreenEventHandler<EmptyObject>;
15-
onDidDisappear?: TabsScreenEventHandler<EmptyObject>;
16-
onWillAppear?: TabsScreenEventHandler<EmptyObject>;
17-
onWillDisappear?: TabsScreenEventHandler<EmptyObject>;
18-
isFocused?: boolean;
14+
onDidAppear?: TabsScreenEventHandler<EmptyObject> | undefined;
15+
onDidDisappear?: TabsScreenEventHandler<EmptyObject> | undefined;
16+
onWillAppear?: TabsScreenEventHandler<EmptyObject> | undefined;
17+
onWillDisappear?: TabsScreenEventHandler<EmptyObject> | undefined;
18+
isFocused?: boolean | undefined;
1919
screenKey: string;
2020
}
2121

src/fabric/ModalScreenNativeComponent.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,27 @@ type ReplaceAnimation = 'pop' | 'push';
6262
type OptionalBoolean = 'undefined' | 'false' | 'true';
6363

6464
export interface NativeProps extends ViewProps {
65-
onAppear?: CT.DirectEventHandler<ScreenEvent>;
66-
onDisappear?: CT.DirectEventHandler<ScreenEvent>;
67-
onDismissed?: CT.DirectEventHandler<ScreenDismissedEvent>;
68-
onNativeDismissCancelled?: CT.DirectEventHandler<ScreenDismissedEvent>;
69-
onWillAppear?: CT.DirectEventHandler<ScreenEvent>;
70-
onWillDisappear?: CT.DirectEventHandler<ScreenEvent>;
71-
onHeaderHeightChange?: CT.DirectEventHandler<HeaderHeightChangeEvent>;
72-
onTransitionProgress?: CT.DirectEventHandler<TransitionProgressEvent>;
73-
onGestureCancel?: CT.DirectEventHandler<ScreenEvent>;
74-
onHeaderBackButtonClicked?: CT.DirectEventHandler<ScreenEvent>;
75-
onSheetDetentChanged?: CT.DirectEventHandler<SheetDetentChangedEvent>;
65+
onAppear?: CT.DirectEventHandler<ScreenEvent> | undefined;
66+
onDisappear?: CT.DirectEventHandler<ScreenEvent> | undefined;
67+
onDismissed?: CT.DirectEventHandler<ScreenDismissedEvent> | undefined;
68+
onNativeDismissCancelled?:
69+
| CT.DirectEventHandler<ScreenDismissedEvent>
70+
| undefined;
71+
onWillAppear?: CT.DirectEventHandler<ScreenEvent> | undefined;
72+
onWillDisappear?: CT.DirectEventHandler<ScreenEvent> | undefined;
73+
onHeaderHeightChange?:
74+
| CT.DirectEventHandler<HeaderHeightChangeEvent>
75+
| undefined;
76+
onTransitionProgress?:
77+
| CT.DirectEventHandler<TransitionProgressEvent>
78+
| undefined;
79+
onGestureCancel?: CT.DirectEventHandler<ScreenEvent> | undefined;
80+
onHeaderBackButtonClicked?: CT.DirectEventHandler<ScreenEvent> | undefined;
81+
onSheetDetentChanged?:
82+
| CT.DirectEventHandler<SheetDetentChangedEvent>
83+
| undefined;
7684
screenId?: CT.WithDefault<string, ''>;
77-
sheetAllowedDetents?: number[];
85+
sheetAllowedDetents?: number[] | undefined;
7886
sheetLargestUndimmedDetent?: CT.WithDefault<CT.Int32, -1>;
7987
sheetGrabberVisible?: CT.WithDefault<boolean, false>;
8088
sheetCornerRadius?: CT.WithDefault<CT.Float, -1.0>;

src/fabric/ScreenNativeComponent.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,27 @@ type ScrollEdgeEffect = 'automatic' | 'hard' | 'soft' | 'hidden';
6464
type OptionalBoolean = 'undefined' | 'false' | 'true';
6565

6666
export interface NativeProps extends ViewProps {
67-
onAppear?: CT.DirectEventHandler<ScreenEvent>;
68-
onDisappear?: CT.DirectEventHandler<ScreenEvent>;
69-
onDismissed?: CT.DirectEventHandler<ScreenDismissedEvent>;
70-
onNativeDismissCancelled?: CT.DirectEventHandler<ScreenDismissedEvent>;
71-
onWillAppear?: CT.DirectEventHandler<ScreenEvent>;
72-
onWillDisappear?: CT.DirectEventHandler<ScreenEvent>;
73-
onHeaderHeightChange?: CT.DirectEventHandler<HeaderHeightChangeEvent>;
74-
onTransitionProgress?: CT.DirectEventHandler<TransitionProgressEvent>;
75-
onGestureCancel?: CT.DirectEventHandler<ScreenEvent>;
76-
onHeaderBackButtonClicked?: CT.DirectEventHandler<ScreenEvent>;
77-
onSheetDetentChanged?: CT.DirectEventHandler<SheetDetentChangedEvent>;
67+
onAppear?: CT.DirectEventHandler<ScreenEvent> | undefined;
68+
onDisappear?: CT.DirectEventHandler<ScreenEvent> | undefined;
69+
onDismissed?: CT.DirectEventHandler<ScreenDismissedEvent> | undefined;
70+
onNativeDismissCancelled?:
71+
| CT.DirectEventHandler<ScreenDismissedEvent>
72+
| undefined;
73+
onWillAppear?: CT.DirectEventHandler<ScreenEvent> | undefined;
74+
onWillDisappear?: CT.DirectEventHandler<ScreenEvent> | undefined;
75+
onHeaderHeightChange?:
76+
| CT.DirectEventHandler<HeaderHeightChangeEvent>
77+
| undefined;
78+
onTransitionProgress?:
79+
| CT.DirectEventHandler<TransitionProgressEvent>
80+
| undefined;
81+
onGestureCancel?: CT.DirectEventHandler<ScreenEvent> | undefined;
82+
onHeaderBackButtonClicked?: CT.DirectEventHandler<ScreenEvent> | undefined;
83+
onSheetDetentChanged?:
84+
| CT.DirectEventHandler<SheetDetentChangedEvent>
85+
| undefined;
7886
screenId?: CT.WithDefault<string, ''>;
79-
sheetAllowedDetents?: number[];
87+
sheetAllowedDetents?: number[] | undefined;
8088
sheetLargestUndimmedDetent?: CT.WithDefault<CT.Int32, -1>;
8189
sheetGrabberVisible?: CT.WithDefault<boolean, false>;
8290
sheetCornerRadius?: CT.WithDefault<CT.Float, -1.0>;

src/fabric/ScreenStackHeaderConfigNativeComponent.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,14 @@ export interface NativeProps extends ViewProps {
7272
blurEffect?: CT.WithDefault<BlurEffect, 'none'>;
7373
// TODO: implement this props on iOS
7474
topInsetEnabled?: boolean;
75-
headerLeftBarButtonItems?: CT.UnsafeMixed[];
76-
headerRightBarButtonItems?: CT.UnsafeMixed[];
77-
onPressHeaderBarButtonItem?: CT.DirectEventHandler<OnPressHeaderBarButtonItemEvent>;
78-
onPressHeaderBarButtonMenuItem?: CT.DirectEventHandler<OnPressHeaderBarButtonMenuItemEvent>;
75+
headerLeftBarButtonItems?: CT.UnsafeMixed[] | undefined;
76+
headerRightBarButtonItems?: CT.UnsafeMixed[] | undefined;
77+
onPressHeaderBarButtonItem?:
78+
| CT.DirectEventHandler<OnPressHeaderBarButtonItemEvent>
79+
| undefined;
80+
onPressHeaderBarButtonMenuItem?:
81+
| CT.DirectEventHandler<OnPressHeaderBarButtonMenuItemEvent>
82+
| undefined;
7983
synchronousShadowStateUpdatesEnabled?: CT.WithDefault<boolean, false>;
8084

8185
// Experimental

src/fabric/ScreenStackNativeComponent.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ type FinishTransitioningEvent = Readonly<{}>;
99
export interface NativeProps extends ViewProps {
1010
iosPreventReattachmentOfDismissedScreens?: CT.WithDefault<boolean, true>;
1111

12-
onFinishTransitioning?: CT.DirectEventHandler<FinishTransitioningEvent>;
12+
onFinishTransitioning?:
13+
| CT.DirectEventHandler<FinishTransitioningEvent>
14+
| undefined;
1315
}
1416

1517
export default codegenNativeComponent<NativeProps>('RNSScreenStack', {});

src/fabric/safe-area/SafeAreaViewNativeComponent.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@ import type { CodegenTypes as CT, ViewProps } from 'react-native';
77
type InsetType = 'all' | 'system' | 'interface';
88

99
export interface NativeProps extends ViewProps {
10-
edges?: Readonly<{
11-
top: boolean;
12-
right: boolean;
13-
bottom: boolean;
14-
left: boolean;
15-
}>;
10+
edges?:
11+
| Readonly<{
12+
top: boolean;
13+
right: boolean;
14+
bottom: boolean;
15+
left: boolean;
16+
}>
17+
| undefined;
1618
// Android-only
1719
insetType?: CT.WithDefault<InsetType, 'all'>;
1820
}

0 commit comments

Comments
 (0)