[](https://travis-ci.org/styleguidist/react-docgen-typescript)
npm install @magiclab/react-docgen-typescript

A simple parser for React properties defined in TypeScript instead of propTypes.
It can be used with React Styleguidist.
```
npm install --save-dev react-docgen-typescript
Include following line in your styleguide.config.js:
`javascript`
propsParser: require('react-docgen-typescript').withDefaultConfig([parserOptions]).parse
or if you want to use custom tsconfig file
`javascript`
propsParser: require('react-docgen-typescript').withCustomConfig('./tsconfig.json', [parserOptions]).parse
- propFilter:
`typescript`
{
skipPropsWithName?: string[] | string;
skipPropsWithoutDoc?: boolean;
}
or
`typescript`
(prop: PropItem, component: Component) => boolean
In case you do not want to print out all the HTML props, because your component is typed like this:
`typescript`
const MyComponent: React.FC
propFilter
you can use this workaround inside :`
typescript
if (prop.parent) {
return !prop.parent.fileName.includes('node_modules')
}
return true
`
Note: children without a doc comment will not be documented.
- componentNameResolver:
`typescript`
(exp: ts.Symbol, source: ts.SourceFile) => string | undefined | null | false
If a string is returned, then the component will use that name. Else it will fallback to the default logic of parser.
- shouldExtractLiteralValuesFromEnum: boolean
If set to true, string enums and unions will be converted to docgen enum format. Useful if you use Storybook and want to generate knobs automatically using addon-smart-knobs.
Styled components example:
`typescript`
componentNameResolver: (exp, source) => exp.getName() === 'StyledComponentClass' && getDefaultExportForFile(source);
> The parser exports getDefaultExportForFile helper through its public API.
In the example folder you can see React Styleguidist integration.
The component Column.tsx
`javascript
import * as React from 'react';
import { Component } from 'react';
/**
* Column properties.
*/
export interface IColumnProps {
/* prop1 description /
prop1?: string;
/* prop2 description /
prop2: number;
/**
* prop3 description
*/
prop3: () => void;
/* prop4 description /
prop4: 'option1' | 'option2' | 'option3';
}
/**
* Form column.
*/
export class Column extends Component
render() {
return Test;
}
}
`
Will generate the following stylesheet:
The functional component Grid.tsx
`javascript
import * as React from 'react';
/**
* Grid properties.
*/
export interface IGridProps {
/* prop1 description /
prop1?: string;
/* prop2 description /
prop2: number;
/**
* prop3 description
*/
prop3: () => void;
/* Working grid description /
prop4: 'option1' | 'option2' | 'option3';
}
/**
* Form Grid.
*/
export const Grid = (props: IGridProps) => {
const smaller = () => {return;};
return
Will generate the following stylesheet:
Thanks to all contributors without their help there wouldn't be a single
bug fixed or feature implemented. Check the contributors tab to find out
more. All those people supported this project. THANK YOU!
The integration with React Styleguidist wouldn't be possible without Vyacheslav Slinko pull request #118 at React Styleguidist.