Improve the type of Platform.select for Android

Summary:
There's no need for the 3 type arguments here. Flow will infer a union already if multiple properties are provided. Worse, by not providing these properties these tvars end up with no bounds, which can cause downstream constraints to stall. All of the suppresisons added here are for legitimate errors that were uncovered by consolidating to one type argument.

Changelog: [internal]

Reviewed By: SamChou19815

Differential Revision: D40355811

fbshipit-source-id: 088fd087017a6082c793ef00c8810a81b39fb9fb
This commit is contained in:
Jordan Brown
2022-10-14 11:13:38 -07:00
committed by Facebook GitHub Bot
parent 20c9654ca7
commit b7f07473df
+5 -5
View File
@@ -10,10 +10,10 @@
import NativePlatformConstantsAndroid from './NativePlatformConstantsAndroid';
export type PlatformSelectSpec<A, N, D> = {
android?: A,
native?: N,
default?: D,
export type PlatformSelectSpec<T> = {
android?: T,
native?: T,
default?: T,
...
};
@@ -65,7 +65,7 @@ const Platform = {
// $FlowFixMe[object-this-reference]
return this.constants.uiMode === 'tv';
},
select: <A, N, D>(spec: PlatformSelectSpec<A, N, D>): A | N | D =>
select: <T>(spec: PlatformSelectSpec<T>): T =>
'android' in spec
? // $FlowFixMe[incompatible-return]
spec.android