opt

The CandidType object Opt corresponds to the Candid type opt, is inferred to be a TypeScript Opt<T>, and will be decoded into a JavaScript Object at runtime.

It is a variant with Some and None cases. At runtime if the value of the variant is Some, the Some property of the variant object will have a value of the enclosed Opt type at runtime.

TypeScript or JavaScript:

import { bool, Canister, None, Opt, query, Some } from 'azle/experimental';

export default Canister({
    getOptSome: query([], Opt(bool), () => {
        return Some(true); // equivalent to { Some: true }
    }),
    getOptNone: query([], Opt(bool), () => {
        return None; //equivalent to { None: null}
    })
});

Candid:

service : () -> {
    getOptNone : () -> (opt bool) query;
    getOptSome : () -> (opt bool) query;
}

dfx:

dfx canister call candid_canister getOptSome
(opt true)

dfx canister call candid_canister getOptNone
(null)