aggregation operations on 2d arrays using axis 1 don't return an array type and return only MathScalarType
- Dominant language
- JavaScript
- Stars
- 15.1k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the bug**
On functions like mean, min, max, std, if you take some 2d number array and want to aggregate it along the 1 axis to retrieve a 1d array of output, you want to get some kind of array/matrix/vector type back. However, it only returns MathScalarType which causes a typescript error. I believe that this code in the types/index.d.ts file at line 2668 causes this:
```js
/**
* @param A A single matrix
* @param dimension The mean over the selected dimension
* @returns The mean value
*/
mean(
A: T[] | T[][],
dimension?: number | BigNumber
): T
```
This has a return value of `T`, but it actually returns `T[]` when you have dimension=1 and we want the annotated type to match.
**To Reproduce**
something like
```js
const dataArray: number[][] = [[1, 2], [3, 4]];
const resultArray: number[] = math.mean(dataArray, 1);
```
should create an error saying "Type 'MathScalarType' is not assignable to type 'number[]'". But this works perfectly as intended and does actually return the answer correctly.
This happens on mean, min, max, std, and maybe more things that involve axis but I haven't tested them.
Contributor guide
Assessment
This issue has not been assessed yet.