Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Nr 264 · 16 września 2026 · Średnia

    Wszystko poza pierwszym

    Zaimplementuj Tail<T>, aby dawał krotkę T bez pierwszego elementu. Pusta krotka zostaje pusta.

    01

    Spróbuj rozwiązać samodzielnie

    Par 3

    Zagadka

    drop-first.ts
    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

    3
    • Tail<[1, 2, 3]>—
      → [2, 3]
    • Tail<[1]>—
      → []
    • Tail<[]>—
      → []

    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 17 września 2026

    Rozwiązanie

    type Tail<T extends readonly unknown[]> = T extends [unknown, ...infer R] ? R : []

    Najczęstsza błędna odpowiedź

    type Tail<T extends readonly unknown[]> = T extends [unknown, infer R] ? R : []

    Bez rozwinięcia [unknown, infer R] opisuje krotkę o dokładnie dwóch elementach, a R to drugi *element*, nie reszta krotki. Tail<[1, 2, 3]> nie pasuje do niczego i spada do []; Tail<[1, 2]> zwróciłoby 2 — liczbę tam, gdzie oczekiwano krotki.

    Linia po linii

    1. [unknown, ...infer R]

      unknown na pozycji głowy pasuje do dowolnego pojedynczego elementu, nie nazywając go, a rozwinięcie sprawia, że R jest resztą, niezależnie od jej długości.

    2. : []

      Pusta krotka nie ma głowy do usunięcia, więc nigdy nie pasuje do wzorca i odpowiada za nią gałąź zapasowa. Usunięcie niczego z niczego wciąż daje nic.

    Do zapamiętania

    Rozwinięcie we wzorcu krotki to różnica między „następnym” a „całą resztą”. Jego pominięcie po cichu zmienia to, do czego twój wzorzec w ogóle pasuje.

    Wykorzystuje