isaacscript-common
Version:
Helper functions and features for IsaacScript mods.
28 lines (24 loc) • 742 B
text/typescript
/**
* Helper type to add two other types.
*
* From: https://gist.github.com/ryandabler/8b4ff4f36aed47bc09acc03174638468
*/
export type Add<A extends number, B extends number> = Length<
[...BuildTuple<A>, ...BuildTuple<B>]
>;
/**
* Helper type to subtract two other types.
*
* From: https://gist.github.com/ryandabler/8b4ff4f36aed47bc09acc03174638468
*/
export type Subtract<A extends number, B extends number> = A extends A
? BuildTuple<A> extends [...infer U, ...BuildTuple<B>]
? Length<U>
: never
: never;
type BuildTuple<L extends number, T extends unknown[] = []> = T extends {
length: L;
}
? T
: BuildTuple<L, [...T, unknown]>;
type Length<T extends unknown[]> = T extends { length: infer L } ? L : never;