← Wszystkie zadaniaTypeScript · Junior

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.

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.

  1. typy
    // @ts-expect-error - boolean is not allowed
    formatValue(true);
  2. typy
    type _ = Expect<Equal<ReturnType<typeof formatValue>, string>>;
  3. expect(formatValue('  hello ')).toBe('hello');
  4. expect(formatValue(3.14159)).toBe('3.14');
    expect(formatValue(2)).toBe('2.00');
  5. expect(formatValue(new Date('2024-03-05T10:00:00Z'))).toBe('2024-03-05');
  6. expect(formatValue(null)).toBe('-');
    expect(formatValue(undefined)).toBe('-');