diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts
index 9162dd3e19e..23b9c4e5de3 100644
--- a/src/compiler/checker.ts
+++ b/src/compiler/checker.ts
@@ -5778,6 +5778,7 @@ namespace ts {
return getObjectFlags(typeToSerialize) & (ObjectFlags.Anonymous | ObjectFlags.Mapped) &&
!getIndexInfoOfType(typeToSerialize, IndexKind.String) &&
!getIndexInfoOfType(typeToSerialize, IndexKind.Number) &&
+ !!(length(getPropertiesOfType(typeToSerialize)) || length(getSignaturesOfType(typeToSerialize, SignatureKind.Call))) &&
!length(getSignaturesOfType(typeToSerialize, SignatureKind.Construct)) && // TODO: could probably serialize as function + ns + class, now that that's OK
!getDeclarationWithTypeAnnotation(hostSymbol) &&
!(typeToSerialize.symbol && some(typeToSerialize.symbol.declarations, d => getSourceFileOfNode(d) !== ctxSrc)) &&
diff --git a/tests/baselines/reference/jsDeclarationsReactComponents.js b/tests/baselines/reference/jsDeclarationsReactComponents.js
index 1e5aaea30a4..025a96addda 100644
--- a/tests/baselines/reference/jsDeclarationsReactComponents.js
+++ b/tests/baselines/reference/jsDeclarationsReactComponents.js
@@ -75,8 +75,25 @@ TabbedShowLayout.defaultProps = {
tabs: "default value"
};
-export default TabbedShowLayout;
-
+export default TabbedShowLayout;
+//// [jsDeclarationsReactComponents5.jsx]
+import React from 'react';
+import PropTypes from 'prop-types';
+
+function Tree({ allowDropOnRoot }) {
+ return
+}
+
+Tree.propTypes = {
+ classes: PropTypes.object,
+};
+
+Tree.defaultProps = {
+ classes: {},
+ parentSource: 'parent_id',
+};
+
+export default Tree;
//// [jsDeclarationsReactComponents1.js]
"use strict";
@@ -145,6 +162,26 @@ TabbedShowLayout.defaultProps = {
tabs: "default value"
};
exports.default = TabbedShowLayout;
+//// [jsDeclarationsReactComponents5.js]
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+var react_1 = __importDefault(require("react"));
+var prop_types_1 = __importDefault(require("prop-types"));
+function Tree(_a) {
+ var allowDropOnRoot = _a.allowDropOnRoot;
+ return react_1.default.createElement("div", null);
+}
+Tree.propTypes = {
+ classes: prop_types_1.default.object,
+};
+Tree.defaultProps = {
+ classes: {},
+ parentSource: 'parent_id',
+};
+exports.default = Tree;
//// [jsDeclarationsReactComponents1.d.ts]
@@ -190,3 +227,20 @@ declare namespace TabbedShowLayout {
export const tabs: string;
}
}
+//// [jsDeclarationsReactComponents5.d.ts]
+///
+export default Tree;
+declare function Tree({ allowDropOnRoot }: {
+ allowDropOnRoot: any;
+}): JSX.Element;
+declare namespace Tree {
+ export namespace propTypes {
+ export const classes: PropTypes.Requireable