function handleTSTypeLiteral()

in src/utils/getTSType.ts [135:187]


function handleTSTypeLiteral(
  path: NodePath,
  typeParams: TypeParameters | null,
  importer: Importer,
): ObjectSignatureType<TSFunctionSignatureType> {
  const type: ObjectSignatureType<TSFunctionSignatureType> = {
    name: 'signature',
    type: 'object',
    raw: printValue(path),
    signature: { properties: [] },
  };

  path.get('members').each(param => {
    if (
      t.TSPropertySignature.check(param.node) ||
      t.TSMethodSignature.check(param.node)
    ) {
      const propName = getPropertyName(param, importer);
      if (!propName) {
        return;
      }
      type.signature.properties.push({
        key: propName,
        value: getTSTypeWithRequirements(
          param.get('typeAnnotation'),
          typeParams,
          importer,
        ),
      });
    } else if (t.TSCallSignatureDeclaration.check(param.node)) {
      type.signature.constructor = handleTSFunctionType(
        param,
        typeParams,
        importer,
      );
    } else if (t.TSIndexSignature.check(param.node)) {
      type.signature.properties.push({
        key: getTSTypeWithResolvedTypes(
          param.get('parameters').get(0).get('typeAnnotation'),
          typeParams,
          importer,
        ),
        value: getTSTypeWithRequirements(
          param.get('typeAnnotation'),
          typeParams,
          importer,
        ),
      });
    }
  });

  return type;
}