@fractorysolutions/safe-units
Version:
Type-safe TypeScript units of measure
160 lines (159 loc) • 2.77 kB
TypeScript
import { Exponent } from "./exponent";
export type MultiplyExponents<L extends Exponent, R extends Exponent> = MultiplyTable[L][R];
interface MultiplyTable {
"-5": MultiplyByNeg5Table;
"-4": MultiplyByNeg4Table;
"-3": MultiplyByNeg3Table;
"-2": MultiplyByNeg2Table;
"-1": MultiplyByNeg1Table;
"0": MultiplyByZeroTable;
"1": MultiplyByPos1Table;
"2": MultiplyByPos2Table;
"3": MultiplyByPos3Table;
"4": MultiplyByPos4Table;
"5": MultiplyByPos5Table;
}
interface MultiplyByNeg5Table {
"-5": never;
"-4": never;
"-3": never;
"-2": never;
"-1": "5";
"0": "0";
"1": "-5";
"2": never;
"3": never;
"4": never;
"5": never;
}
interface MultiplyByNeg4Table {
"-5": never;
"-4": never;
"-3": never;
"-2": never;
"-1": "4";
"0": "0";
"1": "-4";
"2": never;
"3": never;
"4": never;
"5": never;
}
interface MultiplyByNeg3Table {
"-5": never;
"-4": never;
"-3": never;
"-2": never;
"-1": "3";
"0": "0";
"1": "-3";
"2": never;
"3": never;
"4": never;
"5": never;
}
interface MultiplyByNeg2Table {
"-5": never;
"-4": never;
"-3": never;
"-2": "4";
"-1": "2";
"0": "0";
"1": "-2";
"2": "-4";
"3": never;
"4": never;
"5": never;
}
interface MultiplyByNeg1Table {
"-5": "5";
"-4": "4";
"-3": "3";
"-2": "2";
"-1": "1";
"0": "0";
"1": "-1";
"2": "-2";
"3": "-3";
"4": "-4";
"5": "-5";
}
interface MultiplyByZeroTable {
"-5": "0";
"-4": "0";
"-3": "0";
"-2": "0";
"-1": "0";
"0": "0";
"1": "0";
"2": "0";
"3": "0";
"4": "0";
"5": "0";
}
interface MultiplyByPos1Table {
"-5": "-5";
"-4": "-4";
"-3": "-3";
"-2": "-2";
"-1": "-1";
"0": "0";
"1": "1";
"2": "2";
"3": "3";
"4": "4";
"5": "5";
}
interface MultiplyByPos2Table {
"-5": never;
"-4": never;
"-3": never;
"-2": "-4";
"-1": "-2";
"0": "0";
"1": "2";
"2": "4";
"3": never;
"4": never;
"5": never;
}
interface MultiplyByPos3Table {
"-5": never;
"-4": never;
"-3": never;
"-2": never;
"-1": "-3";
"0": "0";
"1": "3";
"2": never;
"3": never;
"4": never;
"5": never;
}
interface MultiplyByPos4Table {
"-5": never;
"-4": never;
"-3": never;
"-2": never;
"-1": "-4";
"0": "0";
"1": "4";
"2": never;
"3": never;
"4": never;
"5": never;
}
interface MultiplyByPos5Table {
"-5": never;
"-4": never;
"-3": never;
"-2": never;
"-1": "-5";
"0": "0";
"1": "5";
"2": never;
"3": never;
"4": never;
"5": never;
}
export {};