diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f15eb66af6a..dac2d2e29be 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -12622,7 +12622,7 @@ namespace ts { errorInfo = saveErrorInfo; } } - else if (isTupleType(source) && isArrayType(target) || isArrayType(source) && isReadonlyArrayType(target)) { + else if (isReadonlyArrayType(target) ? isArrayType(source) || isTupleType(source) : isArrayType(target) && isTupleType(source) && !source.target.readonly) { return isRelatedTo(getIndexTypeOfType(source, IndexKind.Number) || anyType, getIndexTypeOfType(target, IndexKind.Number) || anyType, reportErrors); } // Even if relationship doesn't hold for unions, intersections, or generic type references,