@@ -22,7 +22,7 @@ function formatValue(value: unknown, seenValues: Array<unknown>): string {
22
22
}
23
23
24
24
function formatObjectValue (
25
- value : Object ,
25
+ value : object | null ,
26
26
previouslySeenValues : Array < unknown > ,
27
27
) : string {
28
28
if ( value === null ) {
@@ -35,10 +35,8 @@ function formatObjectValue(
35
35
36
36
const seenValues = [ ...previouslySeenValues , value ] ;
37
37
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 ( ) ;
42
40
43
41
// check for infinite recursion
44
42
if ( jsonValue !== value ) {
@@ -53,7 +51,11 @@ function formatObjectValue(
53
51
return formatObject ( value , seenValues ) ;
54
52
}
55
53
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 {
57
59
const entries = Object . entries ( object ) ;
58
60
if ( entries . length === 0 ) {
59
61
return '{}' ;
@@ -98,7 +100,7 @@ function formatArray(
98
100
return '[' + items . join ( ', ' ) + ']' ;
99
101
}
100
102
101
- function getObjectTag ( object : Object ) : string {
103
+ function getObjectTag ( object : object ) : string {
102
104
const tag = Object . prototype . toString
103
105
. call ( object )
104
106
. replace ( / ^ \[ o b j e c t / , '' )
0 commit comments