Can we have `String`s/`Cmd`s as type parameter?

I am working on Julia 1.3 and find we can have Numbers, Symbols and Chars, etc., as type parameters, but they cannot be Strings, Cmds, etc.

julia> struct A{T}
       end

julia> A{333}()
A{333}()

julia> A{"fd"}()
ERROR: TypeError: in Type, in parameter, expected Type, got String
Stacktrace:
 [1] top-level scope at REPL[5]:1

julia> A{:fd}()
A{:fd}()

julia> A{1.0}()
A{1.0}()

julia> x = complex(1,2)
1 + 2im

julia> A{x}()
A{1 + 2im}()

julia> A{`run`}()
ERROR: TypeError: in Type, in parameter, expected Type, got Cmd
Stacktrace:
 [1] top-level scope at REPL[16]:1

What is the reason behind that? What other type of values can we use for type parameters?

I found in this post and the docs of isbitstype and Val that only values that are isbits can be used, plus Symbols. See the first post for more details.

Duplicate of Arguments for Value types