From e74e6ff8a21dbe0b6517b24e2bb50fa8b6320a74 Mon Sep 17 00:00:00 2001 From: Sam Zhou Date: Sat, 7 Nov 2026 12:18:34 -0500 Subject: [PATCH] [flow] Label dictionary keys in published Flow types Flow's `experimental.require_dictionary_key_label` option requires every dictionary key to be labeled, as TypeScript does: ```js type T = { [string]: number }; // error type T = { [key: string]: number }; // ok ``` This labels the four unlabeled keys that end up in the package's published `.js.flow` files: `ReactDOMStyleProps`'s `style`, `Styles`, `MutableCustomProperties`, and the `style` prop of `merge`'s return type. Labels don't affect type checking. ## Test plan `flow full-check` with Flow 0.338.0, using a copy of `.flowconfig` updated for 0.338 with the option turned on: the four `missing-dictionary-key-label` errors in `renderer.web.js`, `styles.js` and `merge.js` are gone, and no other errors change. `prettier --check` passes on the changed files. --- packages/react-strict-dom/src/types/renderer.web.js | 2 +- packages/react-strict-dom/src/types/styles.js | 4 ++-- packages/react-strict-dom/src/web/css/merge.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react-strict-dom/src/types/renderer.web.js b/packages/react-strict-dom/src/types/renderer.web.js index 8e175d6f..be5cc7df 100644 --- a/packages/react-strict-dom/src/types/renderer.web.js +++ b/packages/react-strict-dom/src/types/renderer.web.js @@ -10,5 +10,5 @@ export type ReactDOMStyleProps = Readonly<{ className?: string, 'data-style-src'?: string, - style?: Readonly<{ [string]: string | number }> + style?: Readonly<{ [key: string]: string | number }> }>; diff --git a/packages/react-strict-dom/src/types/styles.js b/packages/react-strict-dom/src/types/styles.js index 0bf3f3cd..db7229d5 100644 --- a/packages/react-strict-dom/src/types/styles.js +++ b/packages/react-strict-dom/src/types/styles.js @@ -20,7 +20,7 @@ import typeof * as TStyleX from '@stylexjs/stylex'; export type Style = InlineStyles; export type Styles = StyleXArray< - StyleXStyles<> | Theme> + StyleXStyles<> | Theme> >; export type IStyleX = Readonly<{ @@ -35,5 +35,5 @@ export type IStyleX = Readonly<{ ... }>; -export type MutableCustomProperties = { [string]: unknown }; +export type MutableCustomProperties = { [key: string]: unknown }; export type CustomProperties = Readonly; diff --git a/packages/react-strict-dom/src/web/css/merge.js b/packages/react-strict-dom/src/web/css/merge.js index 75b31505..c04815ff 100644 --- a/packages/react-strict-dom/src/web/css/merge.js +++ b/packages/react-strict-dom/src/web/css/merge.js @@ -26,7 +26,7 @@ type StylesArray = T | ReadonlyArray>; type Props = Readonly<{ className?: string, 'data-style-src'?: string, - style?: Readonly<{ [string]: string | number }> + style?: Readonly<{ [key: string]: string | number }> }>; const optimizedStyleq = styleq.factory({