From f774ecf4ec1e86b83f251720467d8f4732bf244f Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 10 Mar 2016 14:30:42 -0800 Subject: [PATCH] Remove 'undefined' from type of binding element with non-undefined default value --- src/compiler/checker.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3511305e168..10e4d50d930 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2678,6 +2678,11 @@ namespace ts { type = createArrayType(elementType); } } + // In strict null checking mode, if a default value of a non-undefined type is specified, remove + // undefined from the final type. + if (strictNullChecks && declaration.initializer && !(getNullableKind(checkExpressionCached(declaration.initializer)) & TypeFlags.Undefined)) { + type = removeNullableKind(type, TypeFlags.Undefined); + } return type; }