diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 360b7c8800e..ea9c4286038 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5459,7 +5459,7 @@ namespace ts { if (!(type).declaredProperties) { const symbol = type.symbol; const members = getMembersOfSymbol(symbol); - (type).declaredProperties = getNamedMembers(getMembersOfSymbol(symbol)); + (type).declaredProperties = getNamedMembers(members); (type).declaredCallSignatures = getSignaturesOfSymbol(members.get(InternalSymbolName.Call)); (type).declaredConstructSignatures = getSignaturesOfSymbol(members.get(InternalSymbolName.New)); (type).declaredStringIndexInfo = getIndexInfoOfSymbol(symbol, IndexKind.String); @@ -14222,17 +14222,10 @@ namespace ts { typeFlags |= type.flags; - let prop: TransientSymbol; - if (hasLateBindableName(memberDecl)) { - const nameType = checkComputedPropertyName(memberDecl.name); - if (nameType && isTypeUsableAsLateBoundName(nameType)) { - prop = createSymbol(SymbolFlags.Property | SymbolFlags.Late | member.flags, getLateBoundNameFromType(nameType)); - } - } - - if (!prop) { - prop = createSymbol(SymbolFlags.Property | member.flags, literalName || member.escapedName); - } + const nameType = hasLateBindableName(memberDecl) ? checkComputedPropertyName(memberDecl.name) : undefined; + const prop = nameType && isTypeUsableAsLateBoundName(nameType) + ? createSymbol(SymbolFlags.Property | SymbolFlags.Late | member.flags, getLateBoundNameFromType(nameType)) + : createSymbol(SymbolFlags.Property | member.flags, literalName || member.escapedName); if (inDestructuringPattern) { // If object literal is an assignment pattern and if the assignment pattern specifies a default value