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}
{`}`}
); }