import * as _ from 'lodash'; import * as React from 'react'; import { DocsInfo } from 'ts/pages/documentation/docs_info'; import { MethodSignature } from 'ts/pages/documentation/method_signature'; import { Type } from 'ts/pages/documentation/type'; import { CustomType, TypeDocTypes } from 'ts/types'; interface InterfaceProps { type: CustomType; sectionName: string; docsInfo: DocsInfo; } export function Interface(props: InterfaceProps) { const type = props.type; const properties = _.map(type.children, property => { return ( {property.name}:{' '} {property.type.typeDocType !== TypeDocTypes.Reflection ? ( ) : ( )}, ); }); const hasIndexSignature = !_.isUndefined(type.indexSignature); if (hasIndexSignature) { const is = type.indexSignature; const param = ( {is.keyName}: ); properties.push( [{param}]: {is.valueName}, , ); } const propertyList = _.reduce(properties, (prev: React.ReactNode, curr: React.ReactNode) => { return [prev, '\n\t', curr]; }); return ( {`{`}
{'\t'} {propertyList}
{`}`}
); }