type StringToCharacterArray<S extends string> =
S extends `${infer Char}${infer Rest}`
? [Char, ...StringToCharacterArray<Rest>]
: [];
type LengthOfString<S extends string> = StringToCharacterArray<S>['length']
Solution by Barrenboat #37277
type StringToArray<S extends string, Arr extends string[] = []> =
S extends `${infer First}${infer Tail}`
? StringToArray<Tail, [...Arr, First]>
: Arr;
type LengthOfString<S extends string> = StringToArray<S>['length'];
数组可以读取 Arr['length']
属性,将字符串转换为数组
Solution by djdidi #37158
type LengthOfString<S extends string, Count extends any[] = []> = S extends `${infer F}${infer R}` ? LengthOfString<R, [...Count, any]> : Count['length']
Solution by 359Steve #37059
// your answers
type LengthOfString<S extends string, Res extends any[] = []> = S extends '' ? Res['length'] extends 0 ? 0 : Res['length']
: S extends `${infer F}${infer L}` ? LengthOfString<L, [...Res, F]> : never;
Solution by AlexBraunMagic #36930
type LengthOfString<S extends string, ARR extends string[] = []> = S extends `${infer F}${infer L}` ? LengthOfString<L, [...ARR, F]> : ARR['length']
Solution by tungulin #36747
type LengthOfString<S extends string, A extends any[] = []> =
S extends ${infer _}${infer Rest}
? LengthOfString<Rest, [any, ...A]>
: A['length'];
Solution by asylbekduldiev #36636
// your answers
type LengthOfString<
S extends string,
A extends unknown[] = []
> = S extends `${infer _}${infer R}`
? LengthOfString<R, [...A, unknown]>
: A['length']
Solution by goddnsgit #36183
type Push<T extends unknown[], V> = [...T, V]
type LengthOfString<S extends string, TRes extends number[] = []> = S extends `${any}${infer Other}`
? LengthOfString<Other, Push<TRes, TRes['length']>>
: TRes['length']
Solution by rize-the-flag #35996
export type LengthOfString<S extends string, T extends Array<unknown> = []> = S extends `${infer _}${infer Rest}`
? LengthOfString<Rest, [...T, unknown]>
: T['length'];
Solution by gangnamssal #35860
type LengthOfString<S extends string,Acc extends any[] = []> =
S extends `${infer Start}${infer Rest}`
? LengthOfString<Rest,[...Acc,Start]>
: Acc['length']
Solution by EvilEl #35856
type LengthOfString<S extends string, T extends unknown[] = []> =
S extends `${infer _}${infer Rest}`
? LengthOfString<Rest, [unknown, ...T]>
: T['length'];
Solution by gangnamssal #35579
type LengthOfString<
S extends string,
T extends string[] = []
> = S extends `${infer F}${infer L}`
? LengthOfString<L, [...T, F]>
: T['length'];
Solution by RanungPark #35517
// your answers
type LengthOfString<T extends string> = T extends `${infer first}${infer pending}`
? LengthOfString<pending>
: never;
Solution by Sathiyapramod #35503
// your answers
type LengthOfString<T extends string> = T extends `${infer first}${infer pending}`
? LengthOfString<pending>
: never;
Solution by Sathiyapramod #35457
type LengthOfString<S extends string, AsArray extends string[] = ['']> = S extends `${infer First}${infer Rest}`
? LengthOfString<Rest, [...AsArray, First]>
: { [K in keyof AsArray]: K extends `${infer Index extends number}` ? Index : never } extends [...unknown[], infer Last]
? Last
: never
Solution by stackoverfloweth #35258
type LengthOfString<S extends string, ACC extends string[] = []> = S extends `${string}${infer Rest}` ? LengthOfString<Rest, [...ACC, string]> : ACC['length']
Solution by eunsukimme #35229
// 여기 풀이를 입력하세요
type LengthOfString<
S extends string,
T extends string[] = []
> = S extends `${infer F}${infer R}`
? LengthOfString<R, [...T, F]>
: T['length'];
Solution by LeeKangHyun #35012
Use recursive type to make a split array. Then return its length.
// your answers
type SplittedArray<S extends string> = S extends `${S[0]}${infer Rest}` ? [S[0], ...SplittedArray<Rest>] : [];
type LengthOfString<S extends string> = SplittedArray<S>['length'];
Solution by dev-jaemin #35008
// 你的答案
type StringToTuple<S extends string> = S extends `${infer A}${infer Rest}`
? [A, ...StringToTuple<Rest>]
: [];
type LengthOfString<S extends string> = StringToTuple<S>["length"];
kill two birds with one stone.
Solution by shx123qwe #34966
type LengthOfString<
S extends string,
T extends string[] = []
> = S extends `${infer F}${infer R}`
? LengthOfString<R, [...T, F]>
: T['length'];
Solution by devshinthant #34581
type StringToArr<S extends string> = S extends `${infer p}${infer rest}` ? [p, ...StringToArr<rest>] : []
type LengthOfString<S extends string> = StringToArr<S>['length']
Solution by ouzexi #34011
type LengthOfString<S extends string, N extends any[] = []> = S extends ''
? N['length']
: S extends `${infer A}${infer Rest}`
? LengthOfString<Rest, [...N, A]>
: N['length']
Solution by laplace1009 #33805
type Len<T extends string, L extends string[] = []> = T extends ${infer K}${infer P}
? Len<P, [...L, K]> :L["length"]
Solution by rookiewxy #33733
type StringToArray<S extends string> = S extends `${infer a}${infer b}` ? [a, ...StringToArray<b>] : []
type LengthOfString<S extends string> = StringToArray<S>["length"]
Solution by mosey-san #33727
// 先转个数组类型
type stringToArray<S extends string> = S extends `${infer F}${infer Rest}`
? [F, ...stringToArray<Rest>]
: [];
type LengthOfString<S extends string> = S extends ""
? 0
: stringToArray<S>["length"];
Solution by fyuanz #33686
// 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