WithoutKeys:[keyofT&Keys]extends[never] ?unknown :{ readonly[KinkeyofT&Keys]:"this key is reserved or already used by the screen" }
Forbids Keys on T: a handle's members — its actions, its item lists, the
framework's own keys and the one data field on its top level (the screen's
main identifier) — share one namespace, so an action or a list that repeats
a reserved key or another member's key would silently shadow it.
defineScreen puts it into the constraints of its actions and item lists,
so such a declaration does not type-check, and the error names the key. Data
keys are not members: they live under data, so they are never checked
against the members.
Forbids
KeysonT: a handle's members — its actions, its item lists, the framework's own keys and the one data field on its top level (the screen's main identifier) — share one namespace, so an action or a list that repeats a reserved key or another member's key would silently shadow it.defineScreenputs it into the constraints of its actions and item lists, so such a declaration does not type-check, and the error names the key. Data keys are not members: they live underdata, so they are never checked against the members.