
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
jsonts-flash
Advanced tools
json2ts
json2ts is an npm library that makes it easy for users to convert JSON schema to TypeScript interface.
Type to your CMD and make sure you installed Node.js
npm install jsonts-flash
There are several option hooks in this module, Below is an example of basic usage.
import { json2ts } from "json2ts";
const json = {
name: "John Doe",
age: 18,
status: {
maried: false,
isWorking: true
},
friendName: [
{
name: "Ditz",
age: 18
},
{
name: "Alex",
age: 7
}]
};
const result = json2ts(json, {
inlineGeneration: true
});
Since we are using the inlineGeneration option hook, The interface will be written in your own code file, It will be written automatically under the keyword import. This is the output:
import { json2ts } from "json2ts";
interface RootObjectStatus {
maried: boolean;
isWorking: boolean;
}
interface RootObjectFriendNameItem {
name: string;
age: number;
}
interface RootObject {
name: string;
age: number;
status: RootObjectStatus;
friendName: RootObjectFriendNameItem[];
}
const json = {
name: "John Doe",
age: 18,
status: {
maried: false,
isWorking: true
},
friendName: [
{
name: "Ditz",
age: 18
},
{
name: "Alex",
age: 7
}]
};
const result = json2ts(json, {
inlineGeneration: true
});
[!WARNING] Hook
inlineGenerationonly works for files with extension 'ts' or 'tsx', otherwise it won't work
Is that all? Yes. But if you want to change the interface name, then just use the rootObjectName option hook. this is example:
import { json2ts } from "json2ts";
const json = {
name: "John Doe",
age: 18,
status: {
maried: false,
isWorking: true
},
friendName: [
{
name: "Ditz",
age: 18
},
{
name: "Alex",
age: 7
}]
};
const result = json2ts(json, {
inlineGeneration: true,
rootObjectName: "JohnDoeData"
});
Output:
import { json2ts } from "json2ts";
interface JohnDoeDataStatus {
maried: boolean;
isWorking: boolean;
}
interface JohnDoeDataFriendNameItem {
name: string;
age: number;
}
interface JohnDoeData {
name: string;
age: number;
status: JohnDoeDataStatus;
friendName: JohnDoeDataFriendNameItem[];
}
const json = {
name: "John Doe",
age: 18,
status: {
maried: false,
isWorking: true
},
friendName: [
{
name: "Ditz",
age: 18
},
{
name: "Alex",
age: 7
}]
};
const result = json2ts(json, {
inlineGeneration: true,
rootObjectName: "JohnDoeData"
});
But, can we save the interface output outside our code file? The answer is yes. You can use the saveToFile option hook and then include it with outputPath. Here is an example:
import { json2ts } from "json2ts";
const json = {
name: "John Doe",
age: 18,
status: {
maried: false,
isWorking: true
},
friendName: [
{
name: "Ditz",
age: 18
},
{
name: "Alex",
age: 7
}]
};
const result = json2ts(json, {
// No need inlineGeneration
// You need to create folder types or based on the output path you wrote
rootObjectName: "JohnDoeData",
saveToFile: true, // boolean
outputPath: './types/JohnDoe.ts', // Specify path
});
Output in JohnDoe.ts:
interface JohnDoeDataStatus {
maried: boolean;
isWorking: boolean;
}
interface JohnDoeDataFriendNameItem {
name: string;
age: number;
}
interface JohnDoeData {
name: string;
age: number;
status: JohnDoeDataStatus;
friendName: JohnDoeDataFriendNameItem[];
}
Can I add export word without having to write export in every interface? The answer is yes. You can use the exportWord option hook. Here is an example:
import { json2ts } from "json2ts";
const json = {
name: "John Doe",
age: 18,
status: {
maried: false,
isWorking: true
},
friendName: [
{
name: "Ditz",
age: 18
},
{
name: "Alex",
age: 7
}]
};
const result = json2ts(json, {
// No need inlineGeneration
// You need to create folder types or based on the output path you wrote
rootObjectName: "JohnDoeData",
saveToFile: true, // boolean
outputPath: './types/JohnDoe.ts', // Specify path
exportWord: true
});
Output:
export interface JohnDoeDataStatus {
maried: boolean;
isWorking: boolean;
}
export interface JohnDoeDataFriendNameItem {
name: string;
age: number;
}
export interface JohnDoeData {
name: string;
age: number;
status: JohnDoeDataStatus;
friendName: JohnDoeDataFriendNameItem[];
}
If you just want to add the export word in rootObjectName, you can use the exportWordAtRoot option hook. Here an Example:
import { json2ts } from "json2ts";
const json = {
name: "John Doe",
age: 18,
status: {
maried: false,
isWorking: true
},
friendName: [
{
name: "Ditz",
age: 18
},
{
name: "Alex",
age: 7
}]
};
const result = json2ts(json, {
// No need inlineGeneration
// You need to create folder types or based on the output path you wrote
rootObjectName: "JohnDoeData",
saveToFile: true, // boolean
outputPath: './types/JohnDoe.ts', // Specify path
exportWordAtRoot: true
});
Output:
interface JohnDoeDataStatus {
maried: boolean;
isWorking: boolean;
}
interface JohnDoeDataFriendNameItem {
name: string;
age: number;
}
export interface JohnDoeData {
name: string;
age: number;
status: JohnDoeDataStatus;
friendName: JohnDoeDataFriendNameItem[];
}
Give ideas, And I hope this project will be very helpful to many people, Contributing helps us a lot. Create a fork and make a PR, We will be very happy to review it
This project is licensed under MIT License.
FAQs
Converter JSON to TypeScript Interfaces
We found that jsonts-flash demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.