Variant data type for AssemblyScript.
npm install as-variantVariant Data Type for AssemblyScript
===


Supports any builtin types like i32, bool, string and any custom classes (managed and unmanaged).
``ts
import { Variant } from 'as-variant/assembly'
// before 0.20.x
// import { Variant } from 'as-variant'
class Foo { }
let vNum = Variant.from(123) // stored as i32
let vStr = Variant.from('hello') // stored as string
let vFoo = Variant.from(new Foo) // stored as Foo reference
vNum.set(2.0) // now stored as f64
assert(vNum.is
assert(!vStr.is
assert(vStr.is
assert(vFoo.is
assert(vNum.id != vStr.id) // compare dynamic IDs.
assert(vFoo.id == Variant.idof
let valF64 = vNum.get
let willFail = vNum.get
`
`tsgetUnchecked
let vNum = Variant.from(123)
// skips all checks. It may be danger.`
assert(vNum.getUnchecked
`ts
const dict = new Map
dict.set('str', Variant.from('hello'))
dict.set('num', Variant.from(124.0))
dict.set('arr', Variant.from([1, 2, 3]))
assert(dict.get('arr').get
// or
assert(dict['arr'].get
`
which equivalent to JavaScript:
`js
const dict = {
str: 'hello',
num: 124.0,
}
dict.arr = [1, 2, 3]
assert(dict.arr[2] == 3)
``