docs: function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) {
              var type = getTypeForVariableLikeDeclaration(declaration, /*includeOptionality*/ true);
              if (type) {
                  if (reportErrors) {
                      reportErrorsFromWidening(declaration, type);
                  }
                  // During a normal type check we'll never get to here with a property assignment (the check of the containing
                  // object literal uses a different path). We exclude widening only so that language services and type verification
                  // tools see the actual type.
                  if (declaration.kind === 253 /* PropertyAssignment */) {
                      return type;
                  }
                  return getWidenedType(type);
              }
              // Rest parameters default to type any[], other parameters default to type any
              type = declaration.dotDotDotToken ? anyArrayType : anyType;
              // Report implicit any errors unless this is a private property within an ambient declaration
              if (reportErrors && compilerOptions.noImplicitAny) {
                  if (!declarationBelongsToPrivateAmbientMember(declaration)) {
                      reportImplicitAnyError(declaration, type);
                  }
              }
              return type;
          }