in lib/declaration.ts [164:187]
private notSimpleBagOfProperties(type: ts.Type): boolean {
if (this.tc.getSignaturesOfType(type, ts.SignatureKind.Call).length > 0) return true;
if (this.tc.getSignaturesOfType(type, ts.SignatureKind.Construct).length > 0) return true;
if (type.symbol) {
let declaration = type.symbol.declarations.find(ts.isInterfaceDeclaration);
// We have to check the actual declaration as
if (declaration && declaration.members) {
let members = declaration.members;
for (let i = 0; i < members.length; ++i) {
let node = members[i];
if (base.isStatic(node)) return true;
switch (node.kind) {
case ts.SyntaxKind.PropertyDeclaration:
case ts.SyntaxKind.PropertySignature:
case ts.SyntaxKind.VariableDeclaration:
break;
default:
return true;
}
}
}
}
return false;
}