TypeScript `extend` produces ESLint error when extending a template string?

Viewed 84

I want to implement a type TrimStart like this:

type TrimStart<T extends string> = T extends ` ${infer Rest}` ? TrimStart<Rest> : T;

type TT = TrimStart<'   Vue React Angular'>; // 'Vue React Angular'

But this produces the following error: Parsing error: Type expected.eslint

1 Answers

You forgot to declare the generic parameter T.

type TrimStart<T> = T extends ` ${infer Rest}` ? TrimStart<Rest> : T;

type TT = TrimStart<' Vue React Angular'>
// type TT = "Vue React Angular"
Related