Repository: storybook
Issue: [Bug]: Components with props of intesection of correlated union types, with decorators fails type checking
Labels: bug,has workaround,typescript,csf,sev:S3

### Describe the bug

I'm using some components where props are intersections of correlated unions (which are not trivial to reduce)

```
type Correlated =
  | {
      first: "x";
      second: "y";
    }
  | {
      first: "y";
      second: "x";
    };
type Uncorrelated = {
  name: string;
  age: number;
};
type Props = Correlate & Uncorrelated
```

and I notice some issues when I follow the tutorial

https://storybook.js.org/docs/writing-stories/typescript#using-satisfies-for-better-type-safety

where the inferred types of the `args` fails and becomes `never`, which fails the tutorial

### To Reproduce

```typescript
import * as React from "react";
import type { Meta, StoryObj } from "@storybook/react";

/** Trivial setup function */
function Setup({ children }: React.PropsWithChildren) {
  return children;
}
/** Correlated union type */
type Correlated =
  | {
      first: "x";
      second: "y";
    }
  | {
      first: "y";
      second: "x";
    };
/** Uncorrelated intersection type */
type Uncorrelated = {
  name: string;
  age: number;
};
/** Test component */
function Component({ first, second, name, age }: Correlated & Uncorrelated) {
  return <div>{first + second + name + age}</div>;
}
/** Story meta */
const meta = {
  component: Component,
  decorators: [
    (Story) => (
      <Setup>
        <Story />
      </Setup>
    ),
  ],
  args: {
    name: "John",
    age: 18,
  },
} satisfies Meta<typeof Component>;
export default meta;
type Story = StoryObj<typeof meta>;
/** Story */
export const Primary = {
  args: {
    first: "x",
    second: "y",
  },
} as const satisfies Story;
```

### System

```bash
Storybook Environment Info:

  System:
    OS: Linux 5.15 Ubuntu 22.04.3 LTS 22.04.3 LTS (Jammy Jellyfish)
    CPU: (32) x64 13th Gen Intel(R) Core(TM) i9-13900HX
    Shell: 5.1.16 - /bin/bash
  Binaries:
    Node: 20.10.0 - ~/.nvm/versions/node/v20.10.0/bin/node
    Yarn: 1.22.21 - ~/.nvm/versions/node/v20.10.0/bin/yarn
    npm: 10.2.3 - ~/.nvm/versions/node/v20.10.0/bin/npm <----- active
  npmPackages:
    @storybook/addon-a11y: ^7.4.6 => 7.6.7 
    @storybook/addon-essentials: ^7.4.6 => 7.6.7 
    @storybook/addon-interactions: ^7.4.6 => 7.6.7 
    @storybook/addon-links: ^7.4.6 => 7.6.7 
    @storybook/blocks: ^7.4.6 => 7.6.7 
    @storybook/jest: ^0.2.3 => 0.2.3 
    @storybook/react: ^7.4.6 => 7.6.7 
    @storybook/react-webpack5: ^7.4.6 => 7.6.7 
    @storybook/test-runner: ^0.16.0 => 0.16.0 
    @storybook/testing-library: ^0.2.2 => 0.2.2 
    eslint-plugin-storybook: ^0.6.15 => 0.6.15 
    storybook: ^7.4.6 => 7.6.7
```


### Additional context

Stories without decorators doesn't fail, so the issue can be related closely to existance of `decorators` as well

```typescript
/** Story meta */
const meta = {
  component: Component,
  args: {
    name: "John",
    age: 18,
  },
} satisfies Meta<typeof Component>;
export default meta;
type Story = StoryObj<typeof meta>;
/** Story */
export const Primary = {
  args: {
    first: "x",
    second: "y",
  },
} as const satisfies Story;
```

And also, if I put the correlated props as composition instead of intersection, it works
which can be good workaround to use in practices before this issue resolves

```typescript
/** Correlated union type */
type Correlated =
  | {
      first: "x";
      second: "y";
    }
  | {
      first: "y";
      second: "x";
    };
/** Uncorrelated intersection type */
type Uncorrelated = {
  details: Correlated;
  name: string;
  age: number;
};
/** Test component */
function Component({ details: { first, second }, name, age }: Uncorrelated) {
  return <div>{first + second + name + age}</div>;
}
/** Story meta */
const meta = {
  component: Component,
  decorators: [
    (Story) => (
      <Setup>
        <Story />
      </Setup>
    ),
  ],
  args: {
    name: "John",
    age: 18,
  },
} satisfies Meta<typeof Component>;
export default meta;
type Story = StoryObj<typeof meta>;
/** Story */
export const Primary = {
  args: {
    details: {
      first: "x",
      second: "y",
    },
  },
} as const satisfies Story;
```