TypeScript-DOM-lib-generator icon indicating copy to clipboard operation
TypeScript-DOM-lib-generator copied to clipboard

Add Literal Suggestions to `ARIAMixin` and Fallback for Unknown Values

Open DeepDoge opened this issue 1 year ago • 1 comments

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: https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1184. While that issue suggested disallowing "unknown" values, my suggestion would still permit them but make the known options more discoverable in TypeScript.

DeepDoge avatar Nov 02 '24 13:11 DeepDoge

Similar suggestion with string & {} happened somewhere else, but I think in 2024 the situation is different, we already have several hardcoded enums. PR welcome.

saschanaz avatar Nov 02 '24 19:11 saschanaz