|
1 | 1 | import { GenericMeasure } from "./genericMeasure"; |
| 2 | +import type { BasisType } from "./unitSystem"; |
2 | 3 | import { Unit } from "./unitTypeArithmetic"; |
3 | 4 |
|
4 | 5 | /** A function which applies a symbol prefix and multiplier to a given measure. */ |
5 | | -export type PrefixFn<N = number> = <Basis, U extends Unit<Basis>>( |
| 6 | +export type PrefixFn<N = number> = <Basis extends BasisType, U extends Unit<Basis>>( |
6 | 7 | measure: GenericMeasure<N, Basis, U>, |
7 | 8 | ) => GenericMeasure<N, Basis, U>; |
8 | 9 |
|
9 | 10 | /** A function which transforms a single measure into another measure with the same unit. */ |
10 | | -export type UnaryFn<N = number> = <Basis, U extends Unit<Basis>>( |
| 11 | +export type UnaryFn<N = number> = <Basis extends BasisType, U extends Unit<Basis>>( |
11 | 12 | x: GenericMeasure<N, Basis, U>, |
12 | 13 | ) => GenericMeasure<N, Basis, U>; |
13 | 14 |
|
14 | 15 | /** A function which transforms two measures with same unit into a single measure with the same unit. */ |
15 | | -export type BinaryFn<N = number> = <Basis, U extends Unit<any>>( |
| 16 | +export type BinaryFn<N = number> = <Basis extends BasisType, U extends Unit<any>>( |
16 | 17 | left: GenericMeasure<N, Basis, U>, |
17 | 18 | right: GenericMeasure<N, Basis, U>, |
18 | 19 | ) => GenericMeasure<N, Basis, U>; |
19 | 20 |
|
20 | 21 | /** A function which transforms one or more measure with the same unit into a single measure with the same unit. */ |
21 | | -export type SpreadFn<N = number> = <Basis, U extends Unit<Basis>>( |
| 22 | +export type SpreadFn<N = number> = <Basis extends BasisType, U extends Unit<Basis>>( |
22 | 23 | first: GenericMeasure<N, Basis, U>, |
23 | 24 | ...rest: Array<GenericMeasure<N, Basis, U>> |
24 | 25 | ) => GenericMeasure<N, Basis, U>; |
|
0 commit comments