javascript / expert
Snippet
BigInt-Präzisions-Zustandsverfolgung mit benutzerdefiniertem Serialisierer
Der primitive JavaScript-Datentyp BigInt repräsentiert beliebig große Ganzzahlen. Standard-JSON.stringify wirft bei BigInt-Werten einen TypeError, was eine benutzerdefinierte Replacer-Funktion in Vue Computed Properties erfordert.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
import { ref, computed } from 'vue';const rawBalance = ref(100000000000000000000n);export const safeJsonBalance = computed(() => {try {return JSON.stringify({ balance: rawBalance.value }, (_, value) =>typeof value === 'bigint' ? value.toString() + 'n' : value);} catch (err) {return JSON.stringify({ error: err.message });}});
vue
Erklärung
1
const rawBalance = ref(100000000000000000000n);
Initialisiert ein reaktives Vue-Ref, das ein 64-Bit BigInt-Primitiv-Literal umschließt.
2
typeof value === 'bigint' ? value.toString() + 'n' : value
Ersetzt BigInt-Datentypen während der Serialisierung durch Strings, um nativen JSON-Grenzen auszuweichen.
3
} catch (err) {
Fängt potenzielle Serialisierungsfehler sicher innerhalb des reaktiven Berechnungsflusses ab.