From a2928b8fd31ae3f0f3370a521daff506bf378087 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 30 Aug 2018 13:13:21 -0700 Subject: [PATCH] Optimize relationship checks for arrays and tuples --- src/compiler/checker.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2bd5d40bffa..44c7eba605d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11829,6 +11829,9 @@ namespace ts { errorInfo = saveErrorInfo; } } + else if (isTupleType(source) && (isArrayType(target) || isReadonlyArrayType(target)) || isArrayType(source) && isReadonlyArrayType(target)) { + 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, // it may hold in a structural comparison. // In a check of the form X = A & B, we will have previously checked if A relates to X or B relates