@@ -22,7 +22,7 @@ function formatValue(value: unknown, seenValues: Array<unknown>): string {
2222}
2323
2424function formatObjectValue (
25- value : Object ,
25+ value : object | null ,
2626 previouslySeenValues : Array < unknown > ,
2727) : string {
2828 if ( value === null ) {
@@ -35,10 +35,8 @@ function formatObjectValue(
3535
3636 const seenValues = [ ...previouslySeenValues , value ] ;
3737
38- // @ts -expect-error FIXME: TS Conversion
39- if ( typeof value . toJSON === 'function' ) {
40- // @ts -expect-error FIXME: TS Conversion
41- const jsonValue = ( value . toJSON as ( ) => unknown ) ( ) ;
38+ if ( isJSONable ( value ) ) {
39+ const jsonValue = value . toJSON ( ) ;
4240
4341 // check for infinite recursion
4442 if ( jsonValue !== value ) {
@@ -53,7 +51,11 @@ function formatObjectValue(
5351 return formatObject ( value , seenValues ) ;
5452}
5553
56- function formatObject ( object : Object , seenValues : Array < unknown > ) : string {
54+ function isJSONable ( value : any ) : value is { toJSON : ( ) => unknown } {
55+ return typeof value . toJSON === 'function' ;
56+ }
57+
58+ function formatObject ( object : object , seenValues : Array < unknown > ) : string {
5759 const entries = Object . entries ( object ) ;
5860 if ( entries . length === 0 ) {
5961 return '{}' ;
@@ -98,7 +100,7 @@ function formatArray(
98100 return '[' + items . join ( ', ' ) + ']' ;
99101}
100102
101- function getObjectTag ( object : Object ) : string {
103+ function getObjectTag ( object : object ) : string {
102104 const tag = Object . prototype . toString
103105 . call ( object )
104106 . replace ( / ^ \[ o b j e c t / , '' )
0 commit comments