-// const isIterable = <T>(obj: T): boolean => {
-// if (obj == null) {
-// return false
-// }
-// return typeof (obj as unknown as Iterable<T>)[Symbol.iterator] === 'function'
-// }
+export const convertToInt = (value: unknown): number => {
+ if (value == null) {
+ return 0
+ }
+ if (Number.isSafeInteger(value)) {
+ return value as number
+ }
+ if (typeof value === 'number') {
+ return Math.trunc(value)
+ }
+ let changedValue: number = value as number
+ if (typeof value === 'string') {
+ changedValue = parseInt(value)
+ }
+ if (isNaN(changedValue)) {
+ throw new Error(`Cannot convert to integer: '${String(value)}'`)
+ }
+ return changedValue
+}