function getConstructedObjectType()

in lib/merge.ts [340:364]


  function getConstructedObjectType(constructor: base.Constructor): ts.ObjectTypeDeclaration|
      undefined {
    const constructedTypeSymbol: ts.Symbol = constructor &&
        ts.isTypeReferenceNode(constructor.type) &&
        fc.tc.getTypeAtLocation(constructor.type).getSymbol();
    if (!constructedTypeSymbol) {
      return;
    }

    // The constructed type can be a type literal, an interface, or a class.
    return constructedTypeSymbol.declarations.find((member: ts.TypeElement) => {
      if (ts.isTypeLiteralNode(member)) {
        return true;
      } else if (ts.isInterfaceDeclaration(member)) {
        // Check if the interface was declared within a user-specified input file to
        // prevent emitting classes for TS internal library types.
        const fileName = member.getSourceFile().fileName;
        return fileSet.has(fileName);
      } else if (ts.isClassDeclaration(member)) {
        return true;
      }
      return false;
    }) as ts.ObjectTypeDeclaration |
        undefined;
  }