It may require some value restructure to make undefined/void 0 equal to 0u64. For example,
tag = 0b0000_0000_0000_0 is an extension:
v = 0b000_0..0 is undefined
v = 0b010_0..X is bool
v = 0b100_X..X is object
v = 0b101_X..X is array
v = 0b110_X..X is string
v = 0b111_X..X is bigint
If tag != 0b0000_0000_0000_0 then return bitwise not of value as f64: Number(f64.from_bits(!value))
It may require some
valuerestructure to makeundefined/void 0equal to0u64. For example,tag = 0b0000_0000_0000_0is an extension:v = 0b000_0..0isundefinedv = 0b010_0..Xisboolv = 0b100_X..Xisobjectv = 0b101_X..Xisarrayv = 0b110_X..Xisstringv = 0b111_X..XisbigintIf
tag != 0b0000_0000_0000_0then return bitwise not ofvalueasf64:Number(f64.from_bits(!value))