Merge pull request #4153 from Microsoft/tupleTypeInference

Improved tuple type inference
This commit is contained in:
Anders Hejlsberg
2015-08-05 11:27:18 -07:00
5 changed files with 292 additions and 0 deletions

View File

@@ -5732,6 +5732,14 @@ namespace ts {
inferFromTypes(sourceTypes[i], targetTypes[i]);
}
}
else if (source.flags & TypeFlags.Tuple && target.flags & TypeFlags.Tuple && (<TupleType>source).elementTypes.length === (<TupleType>target).elementTypes.length) {
// If source and target are tuples of the same size, infer from element types
let sourceTypes = (<TupleType>source).elementTypes;
let targetTypes = (<TupleType>target).elementTypes;
for (let i = 0; i < sourceTypes.length; i++) {
inferFromTypes(sourceTypes[i], targetTypes[i]);
}
}
else if (target.flags & TypeFlags.UnionOrIntersection) {
let targetTypes = (<UnionOrIntersectionType>target).types;
let typeParameterCount = 0;