1 2 3 4 5 6 7 8 9
import { Op } from "./util"; export type Add<A extends Op, B extends Op> = { op: '+'; a: A; b: B }; export type Succ<A extends Op> = Add<'1', A>; export type _0 = '0' export type _1 = Succ<_0> export type _2 = Succ<_1> export type _3 = Succ<_2>