There is no notion that a null string is different than a null Array is different than a null anything else. From inside your function, you cannot determine the type name.
More specifically, an instance of a reference class (internally) includes a "pointer" to the type information about the object. When the input is null, there is no such pointer so the type information does not exist.