patch 8.2.3866: Vim9: type checking global variables is inconsistent

Problem:    Vim9: type checking global variables is inconsistent.
Solution:   Use the "unknown" type in more places.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index d17d010..81fa7e4 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -547,6 +547,39 @@
       defcompile
   END
   CheckScriptFailure(lines, 'E1001: Variable not found: b')
+
+  # using script variable requires matching type or type cast
+  lines =<< trim END
+      vim9script
+      var a: any
+      def Func(arg: string = a)
+        echo arg
+      enddef
+      defcompile
+  END
+  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got any')
+
+  lines =<< trim END
+      vim9script
+      var a: any
+      def Func(arg: string = <string>a)
+        echo arg
+      enddef
+      a = 'works'
+      Func()
+  END
+  CheckScriptSuccess(lines)
+
+  # using global variable does not require type cast
+  lines =<< trim END
+      vim9script
+      def Func(arg: string = g:str)
+        echo arg
+      enddef
+      g:str = 'works'
+      Func()
+  END
+  CheckScriptSuccess(lines)
 enddef
 
 def FuncWithComment(  # comment