type Action = () => void; namespace helpers { export function arraySplice(arr: T[], start: number, len: number) { if (start < 0) { return; } for (let i = 0; i < len; ++i) { arr.removeAt(start) } } } namespace console { export function log(msg: string) { serial.writeString(msg); serial.writeString("\r\n"); } } namespace Math { export function clamp(min: number, max:number, value:number): number { return Math.min(max, Math.max(min, value)); } /** * Returns the absolute value of a number (the value without regard to whether it is positive or negative). * For example, the absolute value of -5 is the same as the absolute value of 5. * @param x A numeric expression for which the absolute value is needed. */ export function abs(x: number): number { return x < 0 ? -x : x; } /** * Returns the sign of the x, indicating whether x is positive, negative or zero. * @param x The numeric expression to test */ export function sign(x: number): number { if (x == 0) return 0; if (x > 0) return 1; return -1; } /** * Returns the larger of two supplied numeric expressions. */ export function max(a:number, b:number): number { if (a >= b) return a; return b; } /** * Returns the smaller of two supplied numeric expressions. */ export function min(a:number, b:number): number { if (a <= b) return a; return b; } }