Closed
Description
Initial checklist
- I read the support docs
- I read the contributing guide
- I agree to follow the code of conduct
- I searched issues and couldn’t find anything (or linked relevant results below)
Subject
Add support for extracting the tag name in types
Problem
h('a') // Element
Solution
h('a') // Element & {tagName: 'a'}
Something along these lines:
type DefaultTagName = 'div'
type ExtractTagName<T extends string> =
T extends `${infer TagName}#${infer _}`
? (TagName extends '' ? DefaultTagName : ExtractTagName<TagName>)
: T extends `${infer TagName}.${infer _}`
? (TagName extends '' ? DefaultTagName : TagName)
: (T extends '' ? DefaultTagName : T); // No match
type A = ExtractTagName<'a'>;
type B = ExtractTagName<'#id'>;
type C = ExtractTagName<'.class'>;
type D = ExtractTagName<'a.red.blue'>;
type E = ExtractTagName<'a.class#id'>;
type F = ExtractTagName<'a#id.class'>;
type G = ExtractTagName<'a#'>;
type H = ExtractTagName<'.'>;
Alternatives
n/a