Type Alias Subtract<A, B>

Subtract: `${A}` extends `-${infer N extends number}`
    ? `${B}` extends `-${infer M extends number}`
        ? Subtract<M, N>
        : `-${Add<N, B>}` extends `${infer R extends number}` ? R : never
    : `${B}` extends `-${infer M extends number}`
        ? Length<[...NumberToArray<A>, ...NumberToArray<M>]>
        : NumberToArray<A> extends [...NumberToArray<B>, ...(infer R)]
            ? Length<R>
            : NumberToArray<B> extends [...NumberToArray<A>, ...(infer R)]
                ? `-${Length<R>}` extends `${infer M extends number}` ? M : never
                : never

Type Parameters

  • A extends number
  • B extends number