novy-syndicate/interfaces_test.ts

41 lines
1.2 KiB
TypeScript

import { tuple, message, Methods, Messages, perform } from './interfaces.js';
const m = message({
selector: 'b',
args: [123, 'hi', true],
callback: (result: number) => console.log('result:', result),
});
const m2 = message({
selector: 'c',
args: [],
// callback: (result: void) => console.log('result:', result),
});
type X = Methods<typeof m | typeof m2, [string]>;
type Y = Messages<X, [string]>;
perform({
a(ctxt: string, x: number): string { return `${ctxt}(${x + 1})`; },
b(ctxt: string, y: number): number { return y * 2; },
z(ctxt: string, ...v: number[]) { return 3; },
v(ctxt: string, x: number, y: string, z: boolean): string {
console.log('in v');
return `ctxt ${ctxt} x ${x} y ${y} z ${z}`;
},
w(ctxt: string, m: [string, number]) { console.log('w', ctxt, m); },
w2(ctxt: string, x: number, ...m: [string, number][]) { console.log('w2', ctxt, x, m); },
},
// {
// selector: 'w2',
// args: [99, tuple('hi', 123), tuple('hi', 123)],
// callback: (result: void) => console.log('result:', result)
// },
{
selector: 'v',
args: [123, 'hi', true],
callback: (result: string) => console.log('result:', result)
},
'C');