### Godot version

4.0.1

### System information

Windows 11, Vulkan, ryzen 9 5900X, rx 6700xt

### Issue description

When creating a typed array
(take `var wheels: Array[VehicleWheel3D]` as an example)

and then trying to add a node to the array by referencing it with `$`
(for example `var wheels: Array[VehicleWheel3D] = [$BackLeftWheel]`)

it will return the following error:
_Cannot have an element of type "Node" in an array of type "Array[VehicleWheel3D]"_

I have a theory that this is due to `$MyNode` being the same as `get_node("MyNode")` for the parser and `get_node()` has a return type of `Node`, so the parser thinks that you are trying to append a `Node` to the array (Haven't checked that in the source code, it's just a theory). 

![image](https://user-images.githubusercontent.com/111653551/227974121-e0be38bc-8c99-47f1-adf6-775083805cff.png)

This can be worked around by casting the node as the intended type
(`var wheels: Array[VehicleWheel3D] = [$BackLeftWheel as VehicleWheel3D]`)

### Steps to reproduce

See "Issue description" and "Minimal reproduction project"

### Minimal reproduction project


[Typed Array issue rep project.zip](https://github.com/godotengine/godot/files/11080146/Typed.Array.issue.rep.project.zip)

}
						base = look_class->get_datatype();
						found = true;
						break;
					}
					if (look_class->has_member(name)) {
						resolve_class_member(look_class, name, id);
						GDScriptParser::ClassNode::Member member = look_class->get_member(name);
						GDScriptParser::DataType member_datatype = member.get_datatype();
						switch (member.type) {
							case GDScriptParser::ClassNode::Member::CLASS:
								break; 
							case GDScriptParser::ClassNode::Member::CONSTANT:
								if (member_datatype.kind != GDScriptParser::DataType::SCRIPT && member_datatype.kind != GDScriptParser::DataType::CLASS) {
									push_error(vformat(R"(Constant "%s" is not a preloaded script or class.)", name), id);
									return ERR_PARSE_ERROR;
								}
								break;
							default:
								push_error(vformat(R"(Cannot use %s "%s" in extends chain.)", member.get_type_name(), name), id);
								return ERR_PARSE_ERROR;
						}
						base = member_datatype;
						found = true;
						break;
					}
				}
				if (!found) {
					push_error(vformat(R"(Could not find base class "%s".)", name), id);
					return ERR_PARSE_ERROR;