diff --git a/packages/react-native-codegen/src/CodegenSchema.js b/packages/react-native-codegen/src/CodegenSchema.js index 638dc300e05..1ec1d415d79 100644 --- a/packages/react-native-codegen/src/CodegenSchema.js +++ b/packages/react-native-codegen/src/CodegenSchema.js @@ -172,6 +172,7 @@ export type FunctionTypeAnnotation = $ReadOnly<{| type: 'FunctionTypeAnnotation', params: $ReadOnlyArray, returnTypeAnnotation: FunctionTypeAnnotationReturn, + optional: boolean, |}>; export type MethodTypeShape = $ReadOnly<{| diff --git a/packages/react-native-codegen/src/parsers/flow/__test_fixtures__/fixtures.js b/packages/react-native-codegen/src/parsers/flow/__test_fixtures__/fixtures.js index d485a858fe9..a32871964c1 100644 --- a/packages/react-native-codegen/src/parsers/flow/__test_fixtures__/fixtures.js +++ b/packages/react-native-codegen/src/parsers/flow/__test_fixtures__/fixtures.js @@ -51,7 +51,7 @@ import type {TurboModule} from '../RCTExport'; import * as TurboModuleRegistry from '../TurboModuleRegistry'; export interface Spec extends TurboModule { - +passBool: (arg: boolean) => void; + +passBool?: (arg: boolean) => void; +passNumber: (arg: number) => void; +passString: (arg: string) => void; } diff --git a/packages/react-native-codegen/src/parsers/flow/__tests__/__snapshots__/parser-test.js.snap b/packages/react-native-codegen/src/parsers/flow/__tests__/__snapshots__/parser-test.js.snap index 84caa4f189b..a8489156ec6 100644 --- a/packages/react-native-codegen/src/parsers/flow/__tests__/__snapshots__/parser-test.js.snap +++ b/packages/react-native-codegen/src/parsers/flow/__tests__/__snapshots__/parser-test.js.snap @@ -3336,6 +3336,7 @@ Object { Object { "name": "getArray", "typeAnnotation": Object { + "optional": false, "params": Array [ Object { "name": "arg", @@ -3374,6 +3375,7 @@ Object { Object { "name": "getArray", "typeAnnotation": Object { + "optional": false, "params": Array [ Object { "name": "arg", @@ -3412,6 +3414,7 @@ Object { Object { "name": "passBool", "typeAnnotation": Object { + "optional": true, "params": Array [ Object { "name": "arg", @@ -3429,6 +3432,7 @@ Object { Object { "name": "passNumber", "typeAnnotation": Object { + "optional": false, "params": Array [ Object { "name": "arg", @@ -3446,6 +3450,7 @@ Object { Object { "name": "passString", "typeAnnotation": Object { + "optional": false, "params": Array [ Object { "name": "arg", @@ -3478,6 +3483,7 @@ Object { Object { "name": "getArray", "typeAnnotation": Object { + "optional": false, "params": Array [ Object { "name": "arg", @@ -3575,6 +3581,7 @@ Object { Object { "name": "getNumber", "typeAnnotation": Object { + "optional": false, "params": Array [ Object { "name": "arg", @@ -3592,6 +3599,7 @@ Object { Object { "name": "getVoid", "typeAnnotation": Object { + "optional": false, "params": Array [], "returnTypeAnnotation": Object { "type": "VoidTypeAnnotation", diff --git a/packages/react-native-codegen/src/parsers/flow/methods.js b/packages/react-native-codegen/src/parsers/flow/methods.js index 08cdb62d013..e40564fb824 100644 --- a/packages/react-native-codegen/src/parsers/flow/methods.js +++ b/packages/react-native-codegen/src/parsers/flow/methods.js @@ -222,6 +222,7 @@ function buildMethodSchema( type: 'FunctionTypeAnnotation', returnTypeAnnotation, params, + optional: property.optional, }, }; }