Ignore optionality when skipping overloads

This commit is contained in:
Nathan Shively-Sanders 2016-10-27 15:42:41 -07:00
parent b4451b159c
commit 4e57f700d0
2 changed files with 3 additions and 10 deletions

View File

@ -11906,16 +11906,9 @@ namespace ts {
function isAritySmaller(sourceType: Type, target: Expression) {
if (isFunctionExpressionOrArrowFunction(target) && isFunctionType(sourceType)) {
let targetParameterCount = 0;
for (; targetParameterCount < target.parameters.length; targetParameterCount++) {
const param = target.parameters[targetParameterCount];
if (param.initializer || param.questionToken || param.dotDotDotToken || isJSDocOptionalParameter(param)) {
break;
}
}
const sourceSignatures = getSignaturesOfType(sourceType, SignatureKind.Call);
const sourceLengths = sourceSignatures.map(sig => !sig.hasRestParameter ? sig.parameters.length : Number.MAX_VALUE);
return forEach(sourceLengths, len => len < targetParameterCount);
return forEach(sourceLengths, len => len < target.parameters.length);
}
return false;

View File

@ -122,8 +122,8 @@ module GenericParameter {
>'' : ""
var r11 = foo6(<T>(x: T, y?: T) => ''); // any => string (+1 overload)
>r11 : { (x: any): string; (x: any, y?: any): string; }
>foo6(<T>(x: T, y?: T) => '') : { (x: any): string; (x: any, y?: any): string; }
>r11 : any
>foo6(<T>(x: T, y?: T) => '') : any
>foo6 : <T>(cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; }
><T>(x: T, y?: T) => '' : <T>(x: T, y?: T) => string
>T : T