jsfft
jsfft copied to clipboard
Some types
In case someone needs types. There are some unknown parts which I did not have time to explore
declare module "jsfft" {
type Frequency = { real: number; imag: number };
type InputValue = ComplexArray | number[] | number;
type Filterer = (frequency: Frequency, i: number, n: number) => void;
function FFT(input: InputValue): ComplexArray;
function InvFFT(input: InputValue): ComplexArray;
function frequencyMap(input: InputValue, filterer: Filterer): ComplexArray;
class ComplexArray {
constructor(input: InputValue);
length: number;
real: Float32Array;
imag: Float32Array;
ArrayType(args: unknown): Float32Array;
FFT(): ComplexArray;
InvFFT(): ComplexArray;
frequencyMap(filterer: Filterer): ComplexArray;
conjugate(): unknown;
forEach(iterator: Filterer): unknown;
magnitude(): Float32Array;
map(mapper: Filterer): ComplexArray;
toString(): string;
}
}
FWIW, here's what I came up with
type Value = { real: number, imag: number };
declare module 'jsfft' {
function FFT(input: ComplexArray): ComplexArray;
function InvFFT(input: ComplexArray): ComplexArray;
function frequencyMap(input: ComplexArray, filterer: (value: Value, i: number, n: number) => Value): ComplexArray;
class ComplexArray<TypedArray extends ArrayLike<number> = Float32Array> {
real: TypedArray;
imag: TypedArray;
ArrayType: TypedArray;
constructor(other: ComplexArray | number | ArrayLike<number> | ArrayBufferLike, arrayType?: TypedArray);
toSting(): string;
forEach(iterator: (value: Value, i: number, n: number) => void): void;
map(iterator: (value: Value, i: number, n: number) => Value): ComplexArray<TypedArray>;
conjugate(): ComplexArray<TypedArray>;
magnitude(): TypedArray;
FFT(): ComplexArray<TypedArray>;
InvFFT(): ComplexArray<TypedArray>;
frequencyMap(filterer: (value: Value, i: number, n: number) => Value): ComplexArray<TypedArray>;
}
}