There are two ways to send values through signals: arguments, and bindings.
1) Arguments are values sent at the moment the signal is emitted, pretty much like function calls.
2) Bindings are values coming from the moment you connected the signal (and won't change after). Those are rarely needed, but sometimes they come in handy.
At the moment the signal is emitted, they are both put together: arguments first, bindings next, and are sent to the handling functions.
It looks like you need the first, but you used the second instead, which means the signal will always emit with the value
Type had at the moment you connected the signal. So it's always null.
To make the signal emit with the current value of
Type, declare your signal like this:
And emit it like this:
I would have linked the doc: https://docs.godotengine.org/en/3.1/getting_started/step_by_step/signals.html#signals
Unfortunately, it seems signal parameters are not explained.