Open
Description
The ARIAMixin
currently uses string | null
for each aria property type. The reason it’s just string
rather than a union of valid values is to allow for future, yet unknown, valid values.
However, in TypeScript, we can prevent string
from collapsing with literal unions by using string & {}
. For instance, ariaCurrent
could be typed as "page" | "step" | "location" | (string & {}) | null
, suggesting valid options like "page"
, "step"
, and "location"
while still allowing any other string as a fallback.
There is a related closed issue here: #1184. While that issue suggested disallowing "unknown" values, my suggestion would still permit them but make the known options more discoverable in TypeScript.
Metadata
Metadata
Assignees
Labels
No labels