Вы когда-нибудь задумывались, как подсчитать определенные символы строкового литерала?
вот как:
type GetCountOfSubString< String_ extends string, SubString extends string, Count extends unknown[] = [] > = String_ extends `${string}${SubString}${infer Tail}` ? GetCountOfSubString<Tail, SubString, [1, ...Count]> : Count['length']
type NumberOfA = GetCountOfSubString<"a--a--aa--a","a"> // 5
"детская площадка"
ограничение: количество не может превышать 999, потому что максимальная глубина рекурсии TS составляет всего 1000