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.
Strg+Enter führt die Tests aus. Tab rückt ein; um den Editor per Tastatur zu verlassen, drücke Esc und dann Tab. Der Code wird in diesem Browser gespeichert.
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.
- Typen
// @ts-expect-error - boolean is not allowed formatValue(true);
- Typen
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('-');