From 5edf72666d62cbdefaf4a31513c61451c5a9fc01 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 11 May 2016 09:26:03 -0700 Subject: [PATCH] Revert to declared type when '!' postfix operator would produce 'nothing' --- src/compiler/checker.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2bc0893899..b0bdca3c41 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7621,6 +7621,9 @@ namespace ts { const visitedFlowStart = visitedFlowCount; const result = getTypeAtFlowNode(reference.flowNode); visitedFlowCount = visitedFlowStart; + if (reference.parent.kind === SyntaxKind.NonNullExpression && getTypeWithFacts(result, TypeFacts.NEUndefinedOrNull) === nothingType) { + return declaredType; + } return result; function getTypeAtFlowNode(flow: FlowNode): Type {