Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Nr 276 · 28 września 2026 · Łatwa

    If na poziomie typów

    Zaimplementuj If<Condition, Then, Else>, aby literalny warunek logiczny wybierał dokładnie jedną gałąź.

    01

    Spróbuj rozwiązać samodzielnie

    Par 2

    Zagadka

    type-level-if.ts
    Podejście 1 z 2Jeszcze nie sprawdzone

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

    Testy

    3
    • If<true, 'yes', 'no'>—
      → 'yes'
    • If<false, 'yes', 'no'>—
      → 'no'
    • If<true, 1, never>—
      → 1

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

    Rozwiązanie

    type If<Condition extends boolean, Then, Else> = Condition extends true ? Then : Else

    Najczęstsza błędna odpowiedź

    type If<Condition extends boolean, Then, Else> = boolean extends Condition ? Then : Else

    Przypisywalność ma kierunek. boolean nie jest przypisywalne do węższego literału true, więc odwrócenie pytania wybiera złą gałąź.

    Linia po linii

    1. Condition extends true ? Then : Else

      Dla warunku literalnego test ma jedną odpowiedź, więc przeżywa tylko jedna gałąź.

    Do zapamiętania

    Typ warunkowy jest instrukcją if, której pytaniem jest przypisywalność, a kierunek od lewej do prawej należy do znaczenia.

    Wykorzystuje