Zawężanie typów: formatValue
Funkcja formatValue przyjmuje wartość typu string | number | Date | null | undefined i zwraca napis do pokazania w tabeli.
Napis wraca bez spacji na brzegach, liczba z dwoma miejscami po przecinku (3.14), data jako YYYY-MM-DD w UTC, a null i undefined jako -. Nie zmieniaj sygnatury: wewnątrz funkcji TypeScript ma sam wiedzieć, z jakim typem pracujesz w każdej gałęzi.
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
// @ts-expect-error - boolean is not allowed formatValue(true);
- typy
type _ = Expect<Equal<ReturnType<typeof formatValue>, string>>;
expect(formatValue(' hello ')).toBe('hello');
expect(formatValue(3.14159)).toBe('3.14'); expect(formatValue(2)).toBe('2.00');
expect(formatValue(new Date('2024-03-05T10:00:00Z'))).toBe('2024-03-05');
expect(formatValue(null)).toBe('-'); expect(formatValue(undefined)).toBe('-');