export enum ScriptValueTypes { NUMBER = "number" } export interface NumberValue { readonly type: ScriptValueTypes.NUMBER, readonly value: number, } export function numberValue(value: number|string) { if (typeof value === "string") { return { type: ScriptValueTypes.NUMBER, value: parseInt(value, 10), } } else { return { type: ScriptValueTypes.NUMBER, value, } } } export function isNumberValue(value: ScriptValue): value is NumberValue { return value.type === ScriptValueTypes.NUMBER } export type ScriptValue = NumberValue