I have a rule of thumb for TypeScript: any code which requires you to write spread tuple types is WRONG and you should refactor it IMMEDIATELY. (Ask me how I know this, he says, wiping his brow as he looks up from slogging through the Ember v4 types update.)