diff --git a/packages/react-emotion/types/index.d.ts b/packages/react-emotion/types/index.d.ts index 16749cb48..ffbe6e04a 100644 --- a/packages/react-emotion/types/index.d.ts +++ b/packages/react-emotion/types/index.d.ts @@ -16,7 +16,8 @@ export type InterpolationTypes = export type Interpolation = | InterpolationTypes - | Array>; + | Array> + | ComponentRef; export interface Options { string?: string; @@ -34,8 +35,12 @@ type ElementProps = & JSX.IntrinsicElements[Tag] & { innerRef?: JSX.IntrinsicElements[Tag]['ref'] }; +// tslint:disable:no-empty-interface +interface ComponentRef {} + export interface StyledComponent extends + ComponentRef, ComponentClass, StatelessComponent { withComponent(tag: Tag): diff --git a/packages/react-emotion/types/tests.tsx b/packages/react-emotion/types/tests.tsx index ce2429db6..e3a6df121 100644 --- a/packages/react-emotion/types/tests.tsx +++ b/packages/react-emotion/types/tests.tsx @@ -152,3 +152,16 @@ mount = {}} />; Component = Component.withComponent('input'); mount = {}} />; + +/* + * Reference to other styled component + */ +const Child = styled.div` + color: red; +`; + +const Parent = styled.div` + ${Child} { + color: blue; + } +`;