A Vector can be creating from an existing one. Changes made to either won't be reflected on the other
import { Vector } from 'volts';
const firstVec = new Vector(1,2,3);
const secondVec = new Vector(firstVec);
firstVec.equals(secondVec); // true
firstVec.x = 100;
firstVec.equals(secondVec); // false
// This is exactly the same as calling Vector.copy();
// const secondVec = firstVec.copy();
Types & Generics
This generic type will determine which methods and properties are exposed to Typescript & Intelisense/autocompletion
You can hard-type the value, or you can leave it up to Typescript to figure out for you
import { Vector } from 'volts';
const twoD = new Vector(1,2); // Type get's infered to Vector<2>
twoD.x; // ✅
twoD.y; // ✅
twoD.z; // ❌ highlighted as a type error ('z' doesn't exist on Vector<2>)
Hard-typing the generic is useful when dealing with cases when inference is not possible, for example, when constructing a Vector from an array.
import { Vector } from 'volts';
const arr = [1,2];
const noType = new Vector(arr); // Type get's infered to Vector<number>
// Vector<number> doesn't provide any useful type information, so instead 👇
const hardTyped = new Vector<2>(arr) // Vector<2>
// Note hard-typing to the wrong type will highlight as an error
// Here, there's a collision between Vector<3> and Vector<2>
const badHardTyping = new Vector<3>(1,2); // ❌ highlighted as a type error
Vector<number> is the same as the combination of the Vector 1,2,3 & 4 types + base. Meaning you won't get any useful information based on the dimension of your Vector
AlthoughVector supports taking in an Array as parameter, currently doesn't work as expected, and falls back to the number type. See
The Vector type is . This generic type describes the dimension of your vector, for example Vector<2> represents a two dimensional vector.