Type Conversion
godot-luau-script does its best to determine the proper Godot type from Luau
type annotations. Here are a few things to note about this process:
Nullable (? or T | nil) types
When annotating a method argument with a nullable type, the argument will be
registered to Godot as non-nullable (i.e. number? -> FLOAT). If you want to
have the argument be optional on the Godot side, register default arguments.
When annotating anything else (properties, return types, etc.), using a nullable
type will cause the type to be registered with Godot as Variant unless the
type extends Object. This is because the only Godot type that accepts both
a value and null is Variant. If you encounter this, it’s recommended to
reimplement your logic such that using a nullable is not necessary.
TypedArray<T>
When used for methods and properties, TypedArray<T> will supply Godot with
the correct type for Array elements.
NodePathConstrained<T...>
When used for methods and properties, NodePathConstrained<T...> will tell
Godot to constrain valid Node types to the given types. Only supply types
which extend Node.
SignalWithArgs<F>
When used for signals, SignalWithArgs<F> will tell Godot the parameters of the
registered signal. The supplied type F should be a void (-> ()) function
type with no generics and any number of arguments.
Argument names are optional. If not supplied, the default is argN where N
is the index of the argument starting from 1.
Other potential issues
- Aliasing Godot types (e.g.
type D = Dictionary) is not currently supported.