diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts
index db318e4eb1..78481c17d1 100644
--- a/src/compiler/checker.ts
+++ b/src/compiler/checker.ts
@@ -10905,7 +10905,7 @@ namespace ts {
function checkJsxExpression(node: JsxExpression) {
if (node.expression) {
const type = checkExpression(node.expression);
- if (node.dotDotDotToken && !isArrayType(type)) {
+ if (node.dotDotDotToken && type !== anyType && !isArrayType(type)) {
error(node, Diagnostics.JSX_spread_child_must_be_an_array_type, node.toString(), typeToString(type));
}
return type;
diff --git a/tests/baselines/reference/tsxSpreadChildrenInvalidType.errors.txt b/tests/baselines/reference/tsxSpreadChildrenInvalidType.errors.txt
index d052654167..d1524c6bf3 100644
--- a/tests/baselines/reference/tsxSpreadChildrenInvalidType.errors.txt
+++ b/tests/baselines/reference/tsxSpreadChildrenInvalidType.errors.txt
@@ -27,6 +27,12 @@ tests/cases/conformance/jsx/tsxSpreadChildrenInvalidType.tsx(21,9): error TS2609
!!! error TS2609: JSX spread child must be an array type.
;
}
+ function TodoListNoError({ todos }: TodoListProps) {
+ // any is not checked
+ return
+ {...( as any)}
+
;
+ }
let x: TodoListProps;
\ No newline at end of file
diff --git a/tests/baselines/reference/tsxSpreadChildrenInvalidType.js b/tests/baselines/reference/tsxSpreadChildrenInvalidType.js
index 507b36665d..e9873bfb23 100644
--- a/tests/baselines/reference/tsxSpreadChildrenInvalidType.js
+++ b/tests/baselines/reference/tsxSpreadChildrenInvalidType.js
@@ -22,6 +22,12 @@ function TodoList({ todos }: TodoListProps) {
{...}
;
}
+function TodoListNoError({ todos }: TodoListProps) {
+ // any is not checked
+ return
+ {...( as any)}
+
;
+}
let x: TodoListProps;
@@ -42,5 +48,10 @@ function TodoList(_a) {
var todos = _a.todos;
return React.createElement("div", null, React.createElement(Todo, { key: todos[0].id, todo: todos[0].todo }));
}
+function TodoListNoError(_a) {
+ var todos = _a.todos;
+ // any is not checked
+ return React.createElement("div", null, React.createElement(Todo, { key: todos[0].id, todo: todos[0].todo }));
+}
var x;
React.createElement(TodoList, __assign({}, x));
diff --git a/tests/cases/conformance/jsx/tsxSpreadChildrenInvalidType.tsx b/tests/cases/conformance/jsx/tsxSpreadChildrenInvalidType.tsx
index 20f7d4fae8..41181618ce 100644
--- a/tests/cases/conformance/jsx/tsxSpreadChildrenInvalidType.tsx
+++ b/tests/cases/conformance/jsx/tsxSpreadChildrenInvalidType.tsx
@@ -22,5 +22,11 @@ function TodoList({ todos }: TodoListProps) {
{...}
;
}
+function TodoListNoError({ todos }: TodoListProps) {
+ // any is not checked
+ return
+ {...( as any)}
+
;
+}
let x: TodoListProps;