Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 50de2db

Browse files
committedMar 6, 2020
More optimizations
1 parent 61f0c7a commit 50de2db

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed
 

‎src/compiler/checker.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -9639,7 +9639,7 @@ namespace ts {
96399639
// Create a mapper from T to the current iteration type constituent. Then, if the
96409640
// mapped type is itself an instantiated type, combine the iteration mapper with the
96419641
// instantiation mapper.
9642-
const templateMapper = combineTypeMappers(type.mapper, createTypeMapper([typeParameter], [t]));
9642+
const templateMapper = addTypeMapping(type.mapper, typeParameter, t);
96439643
// If the current iteration type constituent is a string literal type, create a property.
96449644
// Otherwise, for type string create a string index signature.
96459645
if (isTypeUsableAsPropertyName(t)) {
@@ -13606,6 +13606,12 @@ namespace ts {
1360613606
return !mapper1 ? mapper2 : !mapper2 ? mapper1 : makeCompositeTypeMapper(mapper1, mapper2);
1360713607
}
1360813608

13609+
function addTypeMapping(mapper: TypeMapper | undefined, source: TypeParameter, target: Type) {
13610+
return mapper && mapper.kind === TypeMapKind.Simple && mapper.source2 === mapper.target2 ?
13611+
makeSimpleTypeMapper(mapper.source1, mapper.target1, source, target) :
13612+
combineTypeMappers(mapper, makeUnaryTypeMapper(source, target));
13613+
}
13614+
1360913615
function createReplacementMapper(source: Type, target: Type, baseMapper: TypeMapper): TypeMapper {
1361013616
switch (baseMapper.kind) {
1361113617
case TypeMapKind.Simple:
@@ -13845,7 +13851,7 @@ namespace ts {
1384513851
}
1384613852

1384713853
function instantiateMappedTypeTemplate(type: MappedType, key: Type, isOptional: boolean, mapper: TypeMapper) {
13848-
const templateMapper = combineTypeMappers(mapper, createTypeMapper([getTypeParameterFromMappedType(type)], [key]));
13854+
const templateMapper = addTypeMapping(mapper, getTypeParameterFromMappedType(type), key);
1384913855
const propType = instantiateType(getTemplateTypeFromMappedType(<MappedType>type.target || type), templateMapper);
1385013856
const modifiers = getMappedTypeModifiers(type);
1385113857
return strictNullChecks && modifiers & MappedTypeModifiers.IncludeOptional && !maybeTypeOfKind(propType, TypeFlags.Undefined | TypeFlags.Void) ? getOptionalType(propType) :

0 commit comments

Comments
 (0)
Please sign in to comment.