diff --git a/packages/components/src/select-control/test/select-control.tsx b/packages/components/src/select-control/test/select-control.tsx
index 03e3acbf1f732..5b0907d7ca9f4 100644
--- a/packages/components/src/select-control/test/select-control.tsx
+++ b/packages/components/src/select-control/test/select-control.tsx
@@ -81,4 +81,129 @@ describe( 'SelectControl', () => {
expect.anything()
);
} );
+
+ /* eslint-disable jest/expect-expect */
+ describe( 'static typing', () => {
+ describe( 'single', () => {
+ it( 'should infer the value type from available `options`, but not the `value` or `onChange` prop', () => {
+ const onChange: ( value: 'foo' | 'bar' ) => void = () => {};
+
+ ;
+
+ value === 'string' }
+ />;
+ } );
+
+ it( 'should accept an explicit type argument', () => {
+
+ // @ts-expect-error "string" is not "narrow" or "value"
+ value="string"
+ options={ [
+ {
+ value: 'narrow',
+ label: 'Narrow',
+ },
+ {
+ // @ts-expect-error "string" is not "narrow" or "value"
+ value: 'string',
+ label: 'String',
+ },
+ ] }
+ />;
+ } );
+ } );
+
+ describe( 'multiple', () => {
+ it( 'should infer the value type from available `options`, but not the `value` or `onChange` prop', () => {
+ const onChange: (
+ value: ( 'foo' | 'bar' )[]
+ ) => void = () => {};
+
+ ;
+
+
+ // @ts-expect-error "string" is not "narrow" or "value"
+ value.forEach( ( v ) => v === 'string' )
+ }
+ />;
+ } );
+
+ it( 'should accept an explicit type argument', () => {
+
+ multiple
+ // @ts-expect-error "string" is not "narrow" or "value"
+ value={ [ 'string' ] }
+ options={ [
+ {
+ value: 'narrow',
+ label: 'Narrow',
+ },
+ {
+ // @ts-expect-error "string" is not "narrow" or "value"
+ value: 'string',
+ label: 'String',
+ },
+ ] }
+ />;
+ } );
+ } );
+ } );
+ /* eslint-enable jest/expect-expect */
} );