strothj / react-docgen-typescript-loader

Webpack loader to generate docgen information from Typescript React components.
Other
360 stars 47 forks source link

Doesn't support union types #81

Open jeffcstock opened 4 years ago

jeffcstock commented 4 years ago

Consider the following:

Working, no union type

export const Button = (props: ButtonProps) => { ... }

image

Broken when union type (&) used

export const Button = (
  props: ButtonProps & React.HTMLAttributes<HTMLButtonElement>
) => { ... }

image

Any help would be much appreciated.

NathanDeveloping commented 4 years ago

The same problem is occuring to me. I'm using interface and inheritance as a workaround.

It might be cool to be able to distinguish props & extended props too.

kennycrosby commented 4 years ago

@NathanDeveloping I am running into this as well, can you elaborate on your workaround?

YozhEzhi commented 4 years ago

@jeffcstock Sorry for offtop, but how you styled TS docs so beauty? :)

Where I can find info to make my docs as pretty as yours? Thanks.

kennycrosby commented 4 years ago

@YozhEzhi I believe he is using this addon: https://www.npmjs.com/package/@storybook/addon-docs

YozhEzhi commented 4 years ago

@kennycrosby I think you're right. Thanks!

NathanDeveloping commented 4 years ago

@kennycrosby, with your example :

export interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement> {
// extra button props
}

export const Button: React.FunctionComponent<ButtonProps> = ({
 // props decomposed
}) => { ... }

In this way, doc generation works.

dancingshell commented 4 years ago

I also have used React.FC in this case and it works

export const Button: React.FunctionComponent<ButtonProps & React.HTMLAttributes<HTMLButtonElement>> = (props) => {...}