Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Nr 225 · 2 sierpnia 2026 · Średnia

    Przytnij

    Zaimplementuj Trim<S>, aby usuwał białe znaki z obu końców typu łańcuchowego. Whitespace jest dostępne i obejmuje spacje, tabulatory i znaki nowej linii.

    01

    Spróbuj rozwiązać samodzielnie

    Par 3

    Zagadka

    trim-string.ts
    type Whitespace = ' ' | '\n' | '\t'
    Podejście 1 z 3Jeszcze nie sprawdzone

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

    Testy

    4
    • Trim<' hello '>—
      → 'hello'
    • Trim<'nospace'>—
      → 'nospace'
    • Trim<'\ttabbed\t'>—
      → 'tabbed'
    • Trim<' '>—
      → ''

    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 3 sierpnia 2026

    Rozwiązanie

    type Trim<S extends string> = S extends `${Whitespace}${infer R}`
      ? Trim<R>
      : S extends `${infer R}${Whitespace}`
        ? Trim<R>
        : S

    Najczęstsza błędna odpowiedź

    type Trim<S extends string> = S extends `${Whitespace}${infer R}${Whitespace}`
      ? Trim<R>
      : S

    Wymaganie białych znaków po obu stronach w jednym wzorcu zawodzi, gdy tylko jeden koniec je ma: " left" nie pasuje, więc nic nie zostaje przycięte. Oba końce trzeba obsłużyć niezależnie.

    Linia po linii

    1. `${Whitespace}${infer R}`

      Whitespace to unia, więc ten wzorzec jest w istocie trzema wzorcami naraz — literał szablonowy pasuje, jeśli którykolwiek element unii mieści się w miejscu.

    2. Trim<R>

      Na jedno przejście odpada jeden znak, a wynik wraca na wejście. Obie gałęzie wywołują ten sam typ, więc białe znaki z przodu i z tyłu zjada ta sama pętla.

    Do zapamiętania

    Unia wewnątrz wzorca literału szablonowego zwielokrotnia sprawdzane wzorce. Uporządkowane gałęzie warunku pozwalają potem zdejmować po jednym końcu bez pisania dwóch osobnych typów.

    Wykorzystuje