Something went wrong. Try again.
A native-speed rewrite of the roblox-ts compiler in golang
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687interface Inner { num: number; arr?: Array<number>;}
interface Holder { value?: Inner; fn?: () => number; cb: (() => number) | undefined; method?(n: number): number; getInner?(): Inner; tupleMethod?(): LuaTuple<[number, string]>;}
declare const holder: Holder | undefined;declare const exact: Holder;declare const maybeArr: Array<number> | undefined;declare const dict: { [k: string]: number } | undefined;declare const freeFn: (() => number) | undefined;declare const tupleFn: (() => LuaTuple<[number, string]>) | undefined;declare const handlers: { [k: string]: (() => number) | undefined };declare const fnArr: Array<() => number> | undefined;
// optional property access chainsconst num = holder?.value?.num;print(num);
// pure optional access in statement positionholder?.value;
// optional call of a callback property (a.b?.())exact.cb?.();const c = exact.cb?.();print(c);
// optional call of a real method (a.b?.() with isMethod -> _self)exact.method?.(5);const m = exact.method?.(7);print(m);
// optional access AND optional call (a?.b?.() -> double nil check)holder?.method?.(1);const dm = holder?.method?.(2);print(dm);
// optional element access (+1 on array types)const first = maybeArr?.[0];print(first);const v = dict?.["key"];print(v);
// bare optional call (fn?.())freeFn?.();const f = freeFn?.();print(f);
// LuaTuple resultsconst t = tupleFn?.();print(t);const tm = exact.tupleMethod?.();print(tm);
// property-call macro inside an optional chain (a?.pop())maybeArr?.pop();const popped = maybeArr?.pop();print(popped);
// macro call as the base of an optional chainconst lookup = new Map<string, Inner>();const n2 = lookup.get("a")?.num;print(n2);
// chains ending in calls, methods, and accessesconst deep = holder?.getInner?.()?.num;print(deep);print(holder?.value?.arr?.[1]);
// optional element calls (a[b]?.())handlers["go"]?.();const h = handlers["stop"]?.();print(h);fnArr?.[0]?.();const fa = fnArr?.[1]?.();print(fa);
export {};