Skip to content

Commit ddfcc8e

Browse files
committed
fix: vector math function types
1 parent 467b57d commit ddfcc8e

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

src/index.ts

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ export type Vector2D = [x: number, y: number];
33
export type Vector3D = [x: number, y: number, z: number];
44
export type Vector = Vector2D | Vector3D;
55
export type Color = [r: number, g: number, b: number, a: number];
6+
export type NumericValue = number | number[] | Vector | Color;
7+
8+
type MathReturn<
9+
A extends NumericValue,
10+
B extends NumericValue
11+
> = A extends number[]
12+
? Vector | Color | number[]
13+
: B extends number[]
14+
? Vector | Color | number[]
15+
: A extends number
16+
? B extends number
17+
? number
18+
: Error
19+
: Error;
20+
621
export interface PathValue {}
722

823
export type SourceData = any[];
@@ -1267,30 +1282,31 @@ export class Layer {
12671282
): string {
12681283
return "0000";
12691284
}
1285+
12701286
/**
12711287
* Adds two vectors
12721288
*/
1273-
add<VectorType extends Vector | Vector2D | Vector3D>(
1274-
vec1: VectorType,
1275-
vec2: VectorType
1276-
): VectorType {
1277-
return vec2;
1289+
add<A extends NumericValue, B extends NumericValue>(
1290+
a: A,
1291+
b: B
1292+
): MathReturn<A, B> {
1293+
return a as any;
12781294
}
12791295
/**
12801296
* Subtracts two vectors
12811297
*/
1282-
sub<VectorType extends Vector | Vector2D | Vector3D>(
1283-
vec1: VectorType,
1284-
vec2: VectorType
1285-
) {
1286-
return vec1;
1298+
sub<A extends NumericValue, B extends NumericValue>(
1299+
a: A,
1300+
b: B
1301+
): MathReturn<A, B> {
1302+
return a as any;
12871303
}
12881304
/**
12891305
* Multiplies a vector by a given scalar amount
12901306
* @param vec1 The vector to multiply
12911307
* @param amount The amount to multiply by
12921308
*/
1293-
mul<VectorType extends Vector | Vector2D | Vector3D>(
1309+
mul<VectorType extends number | Vector | Vector2D | Vector3D>(
12941310
vec1: VectorType,
12951311
amount: number
12961312
): VectorType {
@@ -1301,7 +1317,7 @@ export class Layer {
13011317
* @param vec1 The vector to divide
13021318
* @param amount The amount to divide by
13031319
*/
1304-
div<VectorType extends Vector | Vector2D | Vector3D>(
1320+
div<VectorType extends number | Vector | Vector2D | Vector3D>(
13051321
vec1: VectorType,
13061322
amount: number
13071323
): VectorType {

0 commit comments

Comments
 (0)