falso
falso copied to clipboard
Why can toCollection return a non-array?
Description
In my opinion, the toCollection method should always return an array (if it does not passed length, then length = 1). The reason for this is very simple: toCollection is used to generate an array of elements. If for some reason you think otherwise, then at least make the correct typing. Currently toCollection always returns the type Collection | Collection[], but should return Collection[] if length is passed.
The example in the specification also needs to be improved:
Proposed solution
No response
Alternatives considered
No response
Do you want to create a pull request?
No
Came to post this same suggestion +1. toCollection to always return an array.
Suggestion Solution toCollection() returns array with default length of 3
Is anyone working on this? seems like a simple fix, I don't mind taking it on, just set the type to return array only right? I think it's ok to return an array of 1 by default even, what's the point of using this function to return just an object??
The type here could just be improved to reflect the runtime behavior: https://github.com/ngneat/falso/blob/bd15cc88c98fa37778f2f8ce1b6f199278d3c0ed/packages/falso/src/lib/collection.ts#L21-L27
If options arg is passed with the length property, the return type should be an array, else it will be an object.
That can be achieved with the following code:
export declare function toCollection<Collection = never, Options extends FakeOptions = never>(generateCollection: (options?: Options) => Collection, options?: Options): Options extends {length: number} ? Collection[]: Collection;