(node, exprType, checkMode)
| 75228 | return propagateOptionalTypeMarker(checkElementAccessExpression(node, checkNonNullType(nonOptionalType, node.expression), checkMode), node, nonOptionalType !== exprType); |
| 75229 | } |
| 75230 | function checkElementAccessExpression(node, exprType, checkMode) { |
| 75231 | var objectType = ts.getAssignmentTargetKind(node) !== 0 /* AssignmentKind.None */ || isMethodAccessForCall(node) ? getWidenedType(exprType) : exprType; |
| 75232 | var indexExpression = node.argumentExpression; |
| 75233 | var indexType = checkExpression(indexExpression); |
| 75234 | if (isErrorType(objectType) || objectType === silentNeverType) { |
| 75235 | return objectType; |
| 75236 | } |
| 75237 | if (isConstEnumObjectType(objectType) && !ts.isStringLiteralLike(indexExpression)) { |
| 75238 | error(indexExpression, ts.Diagnostics.A_const_enum_member_can_only_be_accessed_using_a_string_literal); |
| 75239 | return errorType; |
| 75240 | } |
| 75241 | var effectiveIndexType = isForInVariableForNumericPropertyNames(indexExpression) ? numberType : indexType; |
| 75242 | var accessFlags = ts.isAssignmentTarget(node) ? |
| 75243 | 4 /* AccessFlags.Writing */ | (isGenericObjectType(objectType) && !ts.isThisTypeParameter(objectType) ? 2 /* AccessFlags.NoIndexSignatures */ : 0) : |
| 75244 | 32 /* AccessFlags.ExpressionPosition */; |
| 75245 | var indexedAccessType = getIndexedAccessTypeOrUndefined(objectType, effectiveIndexType, accessFlags, node) || errorType; |
| 75246 | return checkIndexedAccessIndexType(getFlowTypeOfAccessExpression(node, getNodeLinks(node).resolvedSymbol, indexedAccessType, indexExpression, checkMode), node); |
| 75247 | } |
| 75248 | function callLikeExpressionMayHaveTypeArguments(node) { |
| 75249 | return ts.isCallOrNewExpression(node) || ts.isTaggedTemplateExpression(node) || ts.isJsxOpeningLikeElement(node); |
| 75250 | } |
no test coverage detected
searching dependent graphs…