Introduce ObjectTypeAnnotation utility type

Summary:
All throughout the Codegen schema, we re-declare the following shape:
```
{
  type: 'ObjectTypeAnnotation',
  properties: $ReadOnlyArray<{
    name: string,
    optional: boolean,
    typeAnnotation: ...
  }>
}
```

This diff introduces an `ObjectTypeAnnotation<T>` utility type and replaces those re-declarations with instantiations of this type.

**Motivation:** To reduce noise in the CodegenSchema. This should be a pure refactor, and shouldn't actually change any behaviour.

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D24707963

fbshipit-source-id: 6b4eb711ddd041f3a041109ade5ad5644fb16924
This commit is contained in:
Ramanpreet Nara
2020-11-05 18:30:08 -08:00
committed by Facebook GitHub Bot
parent b9f6937288
commit 688caa0bdc
12 changed files with 78 additions and 72 deletions
@@ -11,9 +11,10 @@
'use strict';
import type {
CommandTypeShape,
NamedShape,
CommandsTypeAnnotation,
ComponentShape,
PropTypeShape,
PropTypeAnnotation,
SchemaType,
} from '../../CodegenSchema';
const {
@@ -64,7 +65,7 @@ const commandsTemplate = `
`;
function getJavaValueForProp(
prop: PropTypeShape,
prop: NamedShape<PropTypeAnnotation>,
componentName: string,
): string {
const typeAnnotation = prop.typeAnnotation;
@@ -181,7 +182,9 @@ function getCommandArgJavaType(param, index) {
}
}
function getCommandArguments(command: CommandTypeShape): string {
function getCommandArguments(
command: NamedShape<CommandsTypeAnnotation>,
): string {
return [
'view',
...command.typeAnnotation.params.map(getCommandArgJavaType),