I've used at least three bespoke configuration languages where I eventually had to ask "Why isn't this just Lua?" I highly recommend embedding Lua as the first option over writing one's own config language and parser any time someone suggests it.
Add a few helper functions, and the configuration that dynamically changes the target temps throughout the day is a 12 line Lua function that determines what the HVAC system should do based on the current state, current time, and the current temperature.
I agree; nobody does. But two of the three config languages I used started out as static no-frills languages and eventually became Turing-complete by accretion of need to support more and more complicated configurations, and given that they were headed there eventually, I wish they'd been Lua instead of a Turing-complete bespoke language with its own parser, its own (bad) error messages, little thought paid to debugging ("hey, it was never supposed to be complicated enough to need debugging!"), and no tooling.
Regarding teal specifically: It currently doesn't support union types as described in the post (see the 'Current limitations of union types' section of the tutorial: https://pdesaulniers.github.io/tl/tutorial.html
https://github.com/lewis6991/gitsigns.nvim/commit/4d63d996b0...