0

JSON.strigify() breaks with cyclic objects (as per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value )

The same article recommends 'cycle.js' - which adds 2 methods to the global JSON object - .decycle() & .retrocycle() to stringify cyclic objects.

This works great, but typescript complains unless I add

//@ts-ignore

or other ts hacks - JSON [ 'retrocycle' ] (), etc - which I can do but it's not pretty.

Is there anyway to create something like a "JSON.d.ts" file to override the default TS interface for the global JSON object?

0

1 Answer 1

1

Not sure why this was closed & then re-opened - but by putting together several threads, I came up with this - in case anyone else is interested:

Create a .d.ts typefile, say in src/custom_types:

src/custom_types/JSON.d.ts

In JSON.d.ts:

export declare global {
    interface JSON {
            decycle(object: any, replacer?: any): string;
            retrocycle(something: any): any;
    }
}

In tsconfig.json:

{
  "compilerOptions": {
    ...
    "baseUrl": ".",
    ...
    "paths" : {
      ...
    "*" : ["src/custom_types/*"],
    }
  },
  "typeRoots": [
    ....
    "src/custom_types/",
    ],
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.