From c8ff4bd9b30b8ef480059a17db712beb4a77b89a Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 9 Apr 2019 15:29:40 -1000 Subject: [PATCH] Properly filter mapped types in getIndexType with noIndexSignatures=true --- src/compiler/checker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8e8f038c2d5..465371d0517 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -9848,7 +9848,7 @@ namespace ts { return type.flags & TypeFlags.Union ? getIntersectionType(map((type).types, t => getIndexType(t, stringsOnly, noIndexSignatures))) : type.flags & TypeFlags.Intersection ? getUnionType(map((type).types, t => getIndexType(t, stringsOnly, noIndexSignatures))) : maybeTypeOfKind(type, TypeFlags.InstantiableNonPrimitive) ? getIndexTypeForGenericType(type, stringsOnly) : - getObjectFlags(type) & ObjectFlags.Mapped ? getConstraintTypeFromMappedType(type) : + getObjectFlags(type) & ObjectFlags.Mapped ? filterType(getConstraintTypeFromMappedType(type), t => !(noIndexSignatures && t.flags & (TypeFlags.Any | TypeFlags.String | TypeFlags.Number))) : type === wildcardType ? wildcardType : type.flags & TypeFlags.Any ? keyofConstraintType : stringsOnly ? !noIndexSignatures && getIndexInfoOfType(type, IndexKind.String) ? stringType : getLiteralTypeFromProperties(type, TypeFlags.StringLiteral) :