diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 78408e13af7..e8d2bacac63 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3868,15 +3868,15 @@ namespace ts { enumType.symbol = symbol; if (enumHasLiteralMembers(symbol)) { const memberTypeList: Type[] = []; - const memberTypes = new NumberMap(); + const memberTypes: { [enumMemberValue: number]: EnumLiteralType } = []; for (const declaration of enumType.symbol.declarations) { if (declaration.kind === SyntaxKind.EnumDeclaration) { computeEnumMemberValues(declaration); for (const member of (declaration).members) { const memberSymbol = getSymbolOfNode(member); const value = getEnumMemberValue(member); - if (!memberTypes.get(value)) { - memberTypeList.push(setAndReturn(memberTypes, value, createEnumLiteralType(memberSymbol, enumType, "" + value))); + if (!memberTypes[value]) { + memberTypeList.push(memberTypes[value] = createEnumLiteralType(memberSymbol, enumType, "" + value)); } } } @@ -3897,7 +3897,7 @@ namespace ts { if (!links.declaredType) { const enumType = getDeclaredTypeOfEnum(getParentOfSymbol(symbol)); links.declaredType = enumType.flags & TypeFlags.Union ? - enumType.memberTypes.get(getEnumMemberValue(symbol.valueDeclaration)) : + enumType.memberTypes[getEnumMemberValue(symbol.valueDeclaration)] : enumType; } return links.declaredType; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 3a92904fd7e..1b180c923c1 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2483,7 +2483,7 @@ namespace ts { // Enum types (TypeFlags.Enum) export interface EnumType extends Type { - memberTypes: Map; + memberTypes: { [enumMemberValue: number]: EnumLiteralType }; } // Enum types (TypeFlags.EnumLiteral)