While the JSValueCompatible APIs are failable, the underlying conversion of calling SignedInteger.init(_:) and UnsignedInteger.init(_:) directly can crash at runtime if:
double.isNan
!double.isFinite
double > .max || double < .min
Ideally, none of these would crash and return nil instead:
Int.construct(from: JSValue.number(.infinity))
Int.construct(from: JSValue.number(.nan))
Int.construct(from: JSValue.number(numberGreaterThanIntMax)
Int.construct(from: JSValue.number(numberLessThanIntMin)
While the
JSValueCompatibleAPIs are failable, the underlying conversion of callingSignedInteger.init(_:)andUnsignedInteger.init(_:)directly can crash at runtime if:double.isNan!double.isFinitedouble > .max || double < .minIdeally, none of these would crash and return
nilinstead:Int.construct(from: JSValue.number(.infinity))Int.construct(from: JSValue.number(.nan))Int.construct(from: JSValue.number(numberGreaterThanIntMax)Int.construct(from: JSValue.number(numberLessThanIntMin)