Skip to content

Commit

Permalink
styled-components: add performance test for large unions (#58176)
Browse files Browse the repository at this point in the history
* styled-components: add performance test for large unions

* Make the test agnostic of FC/VFC difference

Co-authored-by: Sebastian Silbermann <silbermann.sebastian@gmail.com>

Co-authored-by: Sebastian Silbermann <silbermann.sebastian@gmail.com>
  • Loading branch information
qnighy and eps1lon committed Jan 19, 2022
1 parent 9662d78 commit 4c7b1cf
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions types/styled-components/test/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1243,3 +1243,25 @@ function unionTest2() {
<C />; // $ExpectError
<C foo={123} bar="foobar" />; // $ExpectError
}

function unionPerformanceTest() {
type ManyUnion = ({ signal1: 'green'; greenTime1?: number } | { signal1: 'red'; redTime1: number }) &
({ signal2?: 'green'; greenTime2?: number } | { signal2: 'red'; redTime2: number }) &
({ signal3?: 'green'; greenTime3?: number } | { signal3: 'red'; redTime3: number }) &
({ signal4?: 'green'; greenTime4?: number } | { signal4: 'red'; redTime4: number }) &
({ signal5?: 'green'; greenTime5?: number } | { signal5: 'red'; redTime5: number });

const C = (props: ManyUnion) => null;

const Styled = styled(C)<{ defaultColor?: string }>`
.signal1 {
color: ${props => props.signal1 || 'green'};
}
`;

<Styled signal1="green" greenTime1={100} />;
<Styled signal1="red" redTime1={200} />;
<Styled signal1="red" greenTime1={100} />; // $ExpectError
<Styled signal1="green" greenTime1={100} signal2="green" greenTime2={100} />;
<Styled signal1="green" greenTime1={100} signal2="red" greenTime2={100} />; // $ExpectError
}

0 comments on commit 4c7b1cf

Please sign in to comment.