← Wszystkie zadaniaTypeScript · Junior
Generyki: first i last
Funkcje first(items) i last(items) zwracają pierwszy i ostatni element tablicy. Teraz przyjmują i zwracają any, więc wynik traci typ.
Zrób z nich generyki: dla number[] wynik ma być number | undefined, a dla tablicy as const unią jej literałów. Pusta tablica daje undefined.
Ctrl+Enter uruchamia testy. Tab robi wcięcie; aby wyjść z edytora klawiaturą, naciśnij Esc, a potem Tab. Kod zapisuje się w tej przeglądarce.
Testy (6)
Testy typów sprawdza kompilator TypeScriptu w trybie strict. Expect<Equal<A, B>> przechodzi, gdy typy są dokładnie takie same, a // @ts-expect-error, gdy następna linia się nie kompiluje. Pierwsze uruchomienie pobiera kompilator, więc trwa kilka sekund.
- typy
const n = first([1, 2, 3]); type _ = Expect<Equal<typeof n, number | undefined>>;
- typy
const s = last(['a', 'b'] as const); type _ = Expect<Equal<typeof s, 'a' | 'b' | undefined>>;
- typy
const e = first([] as string[]); type _ = Expect<Equal<typeof e, string | undefined>>;
expect(first([1, 2, 3])).toBe(1); expect(last([1, 2, 3])).toBe(3);
expect(first([])).toBe(undefined); expect(last([])).toBe(undefined);
expect(last(['only'])).toBe('only');