Generate TypeScript enums, interfaces, and type definitions from JSON/CSV data.
npm install -g @mazhu/tsenumtsenum generate data.json
tsenum generate data.json -o types.ts
tsenum generate data.json --style interfaceGiven data.json:
{
"User": {
"name": "string",
"age": "number",
"email": "string",
"active": "boolean"
},
"Status": {
"Active": 1,
"Inactive": 0,
"Pending": 2
}
}Output types.ts:
// Auto-generated by @mazhu/tsenum
export interface User {
name: string;
age: number;
email: string;
active: boolean;
}
export enum Status {
Active = 1,
Inactive = 0,
Pending = 2,
}tsenum generate roles.csv
tsenum generate roles.csv -o enums.ts --name RoleGiven roles.csv:
Admin,Developer,Manager,GuestOutput:
// Auto-generated by @mazhu/tsenum
export enum Role {
Admin = "Admin",
Developer = "Developer",
Manager = "Manager",
Guest = "Guest",
}tsenum from-api https://api.example.com/users
tsenum from-api https://api.example.com/data -o api-types.ts --header "Authorization: Bearer token"tsenum watch ./schemas -o ./src/types
tsenum watch ./data --ext .json,.csvtsenum config set outputDir ./src/types
tsenum config set style interface
tsenum config set quote single
tsenum config set semi false
tsenum config get
tsenum config reset| Flag | Description | Default |
|---|---|---|
-o, --output |
Output file path | stdout |
--style |
Output style: enum, interface, type, const |
enum |
--name |
Type/enum name | Inferred from filename |
--root-name |
Root type name for nested JSON | Inferred |
--header |
HTTP header for API requests | - |
--ext |
File extensions to watch | .json,.csv |
--quote |
Quote style: single, double |
double |
--semi |
Add semicolons | true |
--no-header-comment |
Skip auto-generated comment | false |
-v, --version |
Show version | - |
-h, --help |
Show help | - |
Configuration is stored in ~/.tsenumrc.json:
{
"outputDir": "./src/types",
"style": "interface",
"quote": "single",
"semi": false
}MIT