diff options
author | Fabio Berger <me@fabioberger.com> | 2018-08-03 03:09:18 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-08-03 03:09:18 +0800 |
commit | 90ead59d34bf5218cf4e1e5317a4ffeb497da8e1 (patch) | |
tree | 0eeaeb21730beff81b27fb5dabd02e1b19e6c942 /packages/react-docs/src/components/type.tsx | |
parent | faa980ffc3bde48e4aaca665c8be83ea4c44b106 (diff) | |
download | dexon-sol-tools-90ead59d34bf5218cf4e1e5317a4ffeb497da8e1.tar dexon-sol-tools-90ead59d34bf5218cf4e1e5317a4ffeb497da8e1.tar.gz dexon-sol-tools-90ead59d34bf5218cf4e1e5317a4ffeb497da8e1.tar.bz2 dexon-sol-tools-90ead59d34bf5218cf4e1e5317a4ffeb497da8e1.tar.lz dexon-sol-tools-90ead59d34bf5218cf4e1e5317a4ffeb497da8e1.tar.xz dexon-sol-tools-90ead59d34bf5218cf4e1e5317a4ffeb497da8e1.tar.zst dexon-sol-tools-90ead59d34bf5218cf4e1e5317a4ffeb497da8e1.zip |
Add support for rendering nested IndexSignatures
Diffstat (limited to 'packages/react-docs/src/components/type.tsx')
-rw-r--r-- | packages/react-docs/src/components/type.tsx | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/packages/react-docs/src/components/type.tsx b/packages/react-docs/src/components/type.tsx index 3504be303..ea66c7b1e 100644 --- a/packages/react-docs/src/components/type.tsx +++ b/packages/react-docs/src/components/type.tsx @@ -93,19 +93,38 @@ export function Type(props: TypeProps): any { break; case TypeDocTypes.Reflection: - typeName = ( - <Signature - name={type.method.name} - returnType={type.method.returnType} - parameters={type.method.parameters} - typeParameter={type.method.typeParameter} - sectionName={props.sectionName} - shouldHideMethodName={true} - shouldUseArrowSyntax={true} - docsInfo={props.docsInfo} - typeDefinitionByName={props.typeDefinitionByName} - /> - ); + if (!_.isUndefined(type.method)) { + typeName = ( + <Signature + name={type.method.name} + returnType={type.method.returnType} + parameters={type.method.parameters} + typeParameter={type.method.typeParameter} + sectionName={props.sectionName} + shouldHideMethodName={true} + shouldUseArrowSyntax={true} + docsInfo={props.docsInfo} + typeDefinitionByName={props.typeDefinitionByName} + /> + ); + } else if (!_.isUndefined(type.indexSignature)) { + const is = type.indexSignature; + const param = ( + <span key={`indexSigParams-${is.keyName}-${is.keyType}-${type.name}`}> + {is.keyName}:{' '} + <Type type={is.keyType} sectionName={props.sectionName} docsInfo={props.docsInfo} /> + </span> + ); + typeName = ( + <span key={`indexSignature-${type.name}-${is.keyType.name}`}> + {'{'}[{param}]: {is.valueName} + {'}'} + </span> + ); + } else { + throw new Error(`Unrecognized Reflection type that isn't a Method nor an Index Signature`); + } + break; case TypeDocTypes.TypeParameter: |