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