type Repeat<
Str extends string,
Times extends string,
Acc extends string = Str
> = Times extends `.${infer Q}`
? (Q extends '' ? Acc : Repeat<Str, Q, `${Str}${Acc}`>)
: Acc;
type FourFoos = Repeat<'Foo', '....'>;
// 'FooFooFooFoo'
Numeral System is Described Here
type Repeat<
Str extends string,
Times extends number,
Acc extends string = Str
> = $$NumToDots<Times> extends `.${infer Q}`
? (Q extends '' ? Acc : Repeat<Str, Q, `${Str}${Acc}`>)
: Acc;
type FourFoos = Repeat<'Foo', 4>;
// 'FooFooFooFoo'