StudyPlayground / TypeScript-Exercise-Challenges

Typescript exercise & challenges
2 stars 0 forks source link

Type Challenges 612-KebabCase #53

Open kscory opened 5 months ago

kscory commented 5 months ago

답안을 작성해주세요.

bananana0118 commented 4 months ago
type KebabCase<S extends string> =S extends `${infer F}${infer Rest}` ? 
                                  Rest extends Uncapitalize<Rest> ?
                                  `${Uncapitalize<F>}${KebabCase<Rest>}`:
                                  `${Uncapitalize<F>}-${KebabCase<Rest>}`
                                  :S

미리 대소문자 판단을 한 후 집어넣음

kscory commented 4 months ago
type UpperAlphabet = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' ;

type KebabCase<S> = S extends `${infer F}${infer R}`
    ? R extends `${UpperAlphabet}${string}`
        ? `${Lowercase<F>}-${KebabCase<R>}`
        : `${Lowercase<F>}${KebabCase<R>}`
    : S
kscory commented 4 months ago
type KebabCase<S extends string> =S extends `${infer F}${infer Rest}` ? 
                                  Rest extends Uncapitalize<Rest> ?
                                  `${Uncapitalize<F>}${KebabCase<Rest>}`:
                                  `${Uncapitalize<F>}-${KebabCase<Rest>}`
                                  :S

미리 대소문자 판단을 한 후 집어넣음

이런 삽질했네요...

wogha95 commented 4 months ago
type CapitalAlphabet = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' ;
type KebabCase<S> = S extends `${infer K}${infer U}`
  ? U extends `${CapitalAlphabet}${string}`
    ? `${Lowercase<K>}-${KebabCase<U>}`
    : `${Lowercase<K>}${KebabCase<U>}`
  : S;