// your answers
type LengthOfString<S extends string, Result extends string[] = []> = S extends `${infer F}${infer R}`
? LengthOfString<R, [...Result, F]>
: Result['length']
Solution by KeithChou #33219
type LengthOfString<S extends string, L extends string[] = []> = S extends `${infer F}${infer Last}` ? LengthOfString<Last, [...L, F]> : L['length']
Solution by ZhipengYang0605 #32822
type StringLength<T extends string, Acc extends 0[] = []> = T extends `${string}${infer Rest}`
? StringLength<Rest, [...Acc, 0]>
: Acc['length']
Solution by ZhulinskiiDanil #32684
type StringToTuple<S extends string> = S extends `${infer F}${infer Rest}`
? [F,...StringToTuple<Rest>] : []
type LengthOfString<S extends string> = StringToTuple<S>["length"]
Solution by avidang #32530
type LengthOfString<S extends string, A extends string[] = []> =
S extends `${infer F}${infer R}`
? LengthOfString<R, [...A, F]>
: A['length']
Solution by dev-hobin #32402
// 解答をここに記入
type LengthOfString<S extends string, T extends string[]=[]> = S extends `${infer F}${infer R}`
? LengthOfString<R, [...T, F]>
: T['length'];
Solution by pea-sys #32121
// 你的答案
type LengthOfString<S extends string, Strs extends any[] = []> = S extends `${infer F}${infer Rest}`
? F extends ''
? 0
: LengthOfString<Rest, [F, ...Strs]>
: Strs["length"]
Solution by Codec-k #32081
type LengthOfString<S extends string, U extends string[] = []> = S extends `${infer F}${infer L}`
? L extends ""
? [L, ...U]["length"]
: LengthOfString<L, [...U, F]>
: 0;
Solution by gasmg #32014
type LengthOfString<S extends string, T extends string[] = []> = S extends `${infer F}${infer R}`
? LengthOfString<R, [...T, F]>
: T['length'];
Solution by jinyoung234 #31736
type LengthOfString<S extends string, A extends any[] = []> = S extends `${infer F}${infer Rest}` ? LengthOfString<Rest, [...A, F]> : A['length'];
Solution by kai-phan #31641
type LengthOfString<
S extends string,
Letters extends string[] = [],
> = S extends ''
? Letters['length']
: S extends `${infer _L}${infer R}`
? LengthOfString<R, [...Letters, R]>
: unkown;
Solution by jakubjereczek #31536
type LengthOfString<
S extends string,
C extends any[] = []
> = S extends `${infer H}${infer T}`
? LengthOfString<T, [...C, H]>
: C["length"];
Solution by vipulpathak113 #31475
I have looked through the different solutions and realized my solution is quite quirky so I wanted to share it.
type LengthOfString<S extends string, T = S> = S extends T ?
LengthOfString<S, never>['length'] :
S extends `${infer ST}${infer Rest}` ?
readonly [ST, ...LengthOfString<Rest, never>] :
readonly []
Solution by roykoren10 #31458
type LengthOfString<
S extends string,
T extends string[] = []
> = S extends `${infer F}${infer R}`
? LengthOfString<R, [...T, F]>
: T['length'];
Solution by MyeonghoonNam #31418
type LengthOfString<S extends string, R extends readonly string[] = []> = S extends `${infer A}${infer B}` ? LengthOfString<B, readonly [...R, A]> : R['length'];
Solution by eward957 #31244
type LengthList<S extends string> = S extends `${infer F}${infer Rest}` ? [F, ...LengthList<Rest>] : []
type LengthOfString<S extends string> = LengthList<S>['length']
Solution by moonshadow-miao #30727
type StringToArray<S extends string> = S extends `${infer A}${infer B}` ? [A, ...StringToArray<B>] : []
type LengthOfString<S extends string> = StringToArray<S>['length']
string or array has 'length',so,we can convert it to array.
Solution by MrRabbit1993 #30442
type Split<S extends string> = S extends '' ? [] : S extends `${infer F}${infer R}` ? [F, ...Split<R>] : [];
type LengthOfString<S extends string> = Split<S>['length'];```
Solution by kai-phan #30349
type LengthOfString<S extends string, L extends string[] = []> = S extends `${infer A}${infer B}` ? LengthOfString<B, [...L, A]> : L['length']
Solution by zhangqiangzgz #30177
type LengthOfString<S extends string, A extends string[] = []> = S extends `${string}${infer R}` ? LengthOfString<R, [...A,string]>: A['length'];
type Len = LengthOfString<'kumamam'>;
const a: Len = 7;
Solution by rxMATTEO #30094
type LengthOfString<S extends string, K extends Array<unknown> = []> = S extends `${infer First}${infer Rest}`
? LengthOfString<Rest, [First, ...K]>
: K['length']
Solution by agus-wesly #29960
// 여기 풀이를 입력하세요
type StringToArray<S extends string> = S extends `${infer First}${infer Rest}` ? [First, ...StringToArray<Rest>] : []
type LengthOfString<S extends string> = StringToArray<S>['length']
Solution by eodnjs467 #29778
// your answers
type StringArray<T extends string> = T extends `${infer First}${infer Rest}` ? [First , ...StringArray<Rest>] : []
type LengthOfString<S extends string> = StringArray<S>['length']
Solution by kerolossamir165 #29543
// your answers
type LengthOfString<S extends string , Acc extends string[] = []> =
S extends `${string}${infer Rest}` ? LengthOfString<Rest ,[...Acc,string]> : Acc["length"]
Solution by kerolossamir165 #29542
type LengthOfString<S extends string, T extends string[] = []>
= S extends `${string}${infer rest}`
? LengthOfString<rest, [string, ...T]>
: T["length"]
Solution by MohammadArasteh #29410
type StringToArray<S extends string> = S extends `${infer First}${infer Rest}` ? [First, ...StringToArray<Rest>] : [];
type LengthOfString<S extends string> = StringToArray<S>['length'];
Solution by maximallain #29294
type String2Tuple<S extends string> = S extends `${infer F}${infer R}` ? [F, ...String2Tuple<R>] : []
type LengthOfString<S extends string> = String2Tuple<S>['length']
Solution by Yirujet #29235
type LengthOfString<S extends string, T extends string[] = []> = S extends `${infer H}${infer R}` ? LengthOfString<R, [...T, H]> : T['length']
Notes: When S is ''
, the extends
statement returns false.
Solution by qianzhong516 #28942
type LengthOfString<S extends string, T extends any[] = []> = S extends `${infer F}${infer R}` ? LengthOfString<R, [F, ...T]> : T['length']
Solution by kai-phan #28904
type StringToCharArr<S extends string> = S extends `${infer F}${infer R}` ? [F, ...StringToCharArr<R>] : [];
type LengthOfString<S extends string> = StringToCharArr<S>['length'];
Solution by kai-phan #28890