import type { PhpRuntimeValue } from '../_helpers/_phpTypes.ts' type IntValue = PhpRuntimeValue export function is_int(mixedVar: IntValue): mixedVar is number { // discuss at: https://locutus.io/php/is_int/ // parity verified: PHP 8.3 // original by: Alex // improved by: Kevin van Zonneveld (https://kvz.io) // improved by: WebDevHobo (https://webdevhobo.blogspot.com/) // improved by: RafaƂ Kukawski (https://blog.kukawski.pl) // revised by: Matt Bradley // bugfixed by: Kevin van Zonneveld (https://kvz.io) // note 1: 1.0 is simplified to 1 before it can be accessed by the function, this makes // note 1: it different from the PHP implementation. We can't fix this unfortunately. // example 1: is_int(23) // returns 1: true // example 2: is_int('23') // returns 2: false // example 3: is_int(23.5) // returns 3: false // example 4: is_int(true) // returns 4: false const num = Number(mixedVar) return typeof mixedVar === 'number' && mixedVar === num && Number.isFinite(num) && Number.isInteger(num) }