/** @module array/unshiftArray.ts */
import { untypedCurry } from '../function/untypedCurry'
import { Prepend, ValueOf } from '../helper-types'
export function unshiftArray( arr: A, item: B ): Prepend
export function unshiftArray( arr: A ): ( item: B ) => Prepend
export function unshiftArray( arr: A, item: B ): Array|B>
export function unshiftArray( arr: A ): ( item: B ) => Array|B>
/**
* Unshift / prepend a item onto the beginning of an array
* @param item item to unshift onto array
* @param arr array to unshift values onto
* @sig a[] -> a -> a[]
* @example
* unshift([1,2,3])('4')
* //=> ['4',1,2,3] : [string, number, number, number]
*/
export function unshiftArray( ...args ) {
return untypedCurry( ( arr, item ) => arr.slice().unshift( item ) )
}