import { format, } from 'date-fns' type DateLike = Date | string | number type MediumDateTime = (d: unknown) => string const mediumDateTime: MediumDateTime = dateRaw => { const date = dateRaw as DateLike let d: Date switch (typeof date!) { case 'string': d = new Date(date) break case 'number': if (isNaN(date as number)) { throw RangeError('Argument cannot be NaN.') } d = new Date(date) break case 'object': if (date! instanceof Date) { d = date break } throw RangeError('Invalid argument format.') default: throw TypeError('Invalid argument type.') } return format(d, 'yyyy-MM-dd HH:mm') } export default mediumDateTime