Quick answer: Construct via Array[Resource]([...]) or copy via typed.assign(untyped).

Function returns Array with mixed Resource elements. You assign to var items: Array[Resource] and Godot complains about type mismatch.

The Fix

# Construct a typed array directly
var items: Array[Resource] = Array([res1, res2], TYPE_OBJECT, "Resource", null)

# Or simpler 4.3+:
var items: Array[Resource]
items.assign(get_untyped_array())   # type-checks each element

# Or use literal initializer:
var items: Array[Resource] = [res1, res2]   # literals work directly

assign validates each element against the typed array’s element type, raising on mismatch. Literal initializers infer type when unambiguous.

Verifying

Pass mixed Array; assign() copies; typed methods work after. Pass an Array containing a non-Resource; assign() throws.

“assign for type-checked copy. Literal for direct init.”

Related Issues

For C# List property edits, see List property. For C# Export flags, see flags.

assign() copies typed. Errors loud.