Вы когда-нибудь задумывались, как подсчитать определенные символы строкового литерала?

вот как:

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