diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4f60cef1ee9..571ab2f83f4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14028,17 +14028,10 @@ namespace ts { } const targetCount = getParameterCount(target); - if (checkMode & SignatureCheckMode.StrictArity) { - const sourceHasRest = hasEffectiveRestParameter(source); - const targetHasRest = hasEffectiveRestParameter(target); - if (sourceHasRest && !targetHasRest || sourceHasRest === targetHasRest && getParameterCount(source) > getParameterCount(target)) { - return Ternary.False; - } - } - else { - if (!hasEffectiveRestParameter(target) && getMinArgumentCount(source) > targetCount) { - return Ternary.False; - } + const sourceHasMoreParameters = !hasEffectiveRestParameter(target) && + (checkMode & SignatureCheckMode.StrictArity ? hasEffectiveRestParameter(source) || getParameterCount(source) > targetCount : getMinArgumentCount(source) > targetCount); + if (sourceHasMoreParameters) { + return Ternary.False; } if (source.typeParameters && source.typeParameters !== target.typeParameters) {