Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Nr 231 · 8 sierpnia 2026 · Trudna

    CamelCase

    Zaimplementuj CamelCase<S>, aby zamieniał typ łańcuchowy snake_case na camelCase. Łańcuch bez podkreślnika wraca bez zmian.

    01

    Spróbuj rozwiązać samodzielnie

    Par 4

    Zagadka

    camel-case.ts
    Podejście 1 z 4Jeszcze nie sprawdzone

    Zastąp ??? — rozwiązanie sprawdzamy przypadkami poniżej. Tab wcina; naciśnij Escape, a potem Tab, by wyjść fokusem.

    Testy

    4
    • CamelCase<'foo_bar'>—
      → 'fooBar'
    • CamelCase<'foo_bar_baz'>—
      → 'fooBarBaz'
    • CamelCase<'single'>—
      → 'single'
    • CamelCase<'a_b_c'>—
      → 'aBC'

    Jak oceniamy test Dokładna równość typów, nie przypisywalność — przecięcie to nie to samo co spłaszczony obiekt.

    Jak poszło innym

    Tę zagadkę rozwiązało jak dotąd mniej niż 5 osób. Rozkład pojawi się, gdy próbka będzie na tyle duża, by coś znaczyć.

    Gra na krótkim dystansie

    Najmniej znaków

    Nie ma jeszcze publicznych wyników.

    Archiwum
    02

    Rozwiązanie z komentarzem

    Opublikowano 9 sierpnia 2026

    Rozwiązanie

    type CamelCase<S extends string> =
      S extends `${infer H}_${infer T}` ? `${H}${CamelCase<Capitalize<T>>}` : S

    Najczęstsza błędna odpowiedź

    type CamelCase<S extends string> =
      S extends `${infer H}_${infer T}` ? `${H}${CamelCase<T>}` : S

    Podkreślnik znika, ale nic nie zostaje zapisane wielką literą, więc "foo_bar" daje "foobar". Usunięcie separatora to tylko połowa przekształcenia — druga połowa to zmiana wielkości liter.

    Linia po linii

    1. Capitalize<T>

      Jeden z czterech wbudowanych typów łańcuchowych implementowanych natywnie przez kompilator — Uppercase, Lowercase, Capitalize, Uncapitalize. Nie mają źródła w TypeScripcie; są wbudowane w sprawdzarkę.

    2. CamelCase<Capitalize<T>>

      Zapis wielką literą *przed* rekurencją sprawia, że każdy poziom obsługuje tylko podkreślnik najbliższy początku. "a_b_c" daje więc "aBC" — rekurencja po kolei kapitalizuje każdy pozostały segment.

    Do zapamiętania

    Wbudowane typy zmiany wielkości liter czynią manipulację łańcuchami na poziomie typów znacznie mniej bolesną, niż powinna być. Sięgaj po nie, zanim napiszesz rekurencję znak po znaku.

    Wykorzystuje