Typescript Count Substring of a String Literal Type

Acid Coder
Jun 27, 2022

Ever wonder how can you count certain characters of a string literal type?

here is how:

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


limitation: the count cannot exceed 999 because the max depth of TS recursion is only 1000



Acid Coder

Typescript Zombie. Youtube Pikachu On Acid. (Unrelated to programming but by watching it you become a good developer overnight)