← Усі задачіTypeScript · Junior

Звуження типів: formatValue

Функція formatValue отримує значення типу string | number | Date | null | undefined і повертає рядок для показу в таблиці.

Рядок повертається без пробілів на краях, число - з двома знаками після коми (3.14), дата - як YYYY-MM-DD у UTC, а null і undefined - як -. Сигнатуру не змінюйте: усередині функції TypeScript має сам розуміти, з яким типом ви працюєте в кожній гілці.

Тести (6)

Тести типів перевіряє компілятор TypeScript у режимі strict. Expect<Equal<A, B>> проходить, коли типи збігаються точно, а // @ts-expect-error - коли наступний рядок не компілюється. Перший запуск завантажує компілятор, тож триває кілька секунд.

  1. типи
    // @ts-expect-error - boolean is not allowed
    formatValue(true);
  2. типи
    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('-');