题目来源(type-challenges)
问题
type case1 = LengthOfString<''>
type case2 = LengthOfString<'1'>
type case3 = LengthOfString<'12'>
type case4 = LengthOfString<'123'>
type case5 = LengthOfString<'1234'>
type case6 = LengthOfString<'12345'>
type case7 = LengthOfString<'123456'>
type case8 = LengthOfString<'1234567'>
type case9 = LengthOfString<'12345678'>
type case10 = LengthOfString<'123456789'>
解答
type LengthOfString<S extends string, Res extends unknown[] = []> =
S extends `${infer _}${infer Tail}`
? LengthOfString<Tail, [...Res, unknown]>
: Res['length']
拆分