Types

ClosingTag<Name, Opening, Closing>

The generic type ClosingTag indicates the closing tag. It takes the tag name of a generic type variable Name constrained by the string and wrap of a generic type variable Chars constrained by generic type StringOfLength of two chars.

type ClosingTag<
  Name extends string,
  Chars extends StringOfLength<2, 2, string>
> = StringOfLength<0, typeof Infinity, `${Chars[0]}/${Name}${Chars[1]}`>;

OpeningTag<Name, Opening, Closing>

The generic type OpeningTag indicates the type of closing tag. It takes the tag name of a generic type variable Name constrained by the string and wrap of a generic type variable Chars constrained by generic type StringOfLength of two chars.

type OpeningTag<
  Name extends string,
  Chars extends StringOfLength<2, 2, string>
> = StringOfLength<0, typeof Infinity, `${Chars[0]}${Name}${Chars[1]}`>;

TaggedText<Text, Name, Opening, Closing>

The generic type TaggedText indicates the type of tagged text, with the opening tag and closing tag of the text.

type TaggedText<Text extends string, Name extends string, Chars extends string> =
  `${OpeningTag<Name, Chars>}${Text}${ClosingTag<Name, Chars>}`;

Last updated

Was this helpful?