← Alle AufgabenTypeScript · Junior

Narrowing: formatValue

Die Funktion formatValue nimmt ein string | number | Date | null | undefined und liefert einen String zur Anzeige in einer Tabelle.

Ein String kommt getrimmt zurück, eine Zahl mit zwei Nachkommastellen (3.14), ein Datum als YYYY-MM-DD in UTC, und null oder undefined als -. Behalte die Signatur: in der Funktion soll TypeScript in jedem Zweig wissen, mit welchem Typ du arbeitest.

Tests (6)

Typtests prüft der TypeScript-Compiler im strict-Modus. Expect<Equal<A, B>> besteht, wenn die Typen exakt gleich sind, und // @ts-expect-error, wenn die nächste Zeile nicht kompiliert. Der erste Start lädt den Compiler und dauert daher ein paar Sekunden.

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