Quick start
You can find source code to this section in the examples:
First let's install ts-genie with a package manager.
- pnpm
 - npm
 - yarn
 
pnpm i -D ts-genie
npm install -D ts-genie
yarn add -D ts-genie
Project setup
This quickstart assumes that you have your environment set up for executing typescript files. If you need set up your project first, you can look at the quickstart examples mentioned above.
First, let's create a new script named generate.ts and add this to your package.json scripts.
{
  "scripts": {
    "generate": "ts-node generate.ts"
  }
}
Then add this code to your generated.ts:
import { tsg } from "ts-genie";
// Initialize a new project inside of a "generated" folder
const tsgen = tsg.init("./generated");
// Create a new module inside of the root folder
tsgen.sourceFile("./index.ts", function * (m) {
});
// This saves generated files to the file system
await tsgen.flush();
This instructs TS Genie to create new TsGenieProject instance in the generated folder and them creates empty index.ts file inside of it. Second argument may be any function with parameter ModuleBuilder and returns Iterable. You can return for example an array or as in this example use a generator function.
Now let's add some generated code.
import { tsg } from "ts-genie";
const tsgen = tsg.init("./generated");
tsgen.sourceFile("./index.ts", function * (m) {
  yield m.interface("Person")
    .export()
    .prop("firstname", "string")
    .prop("age", "number", { optional: true });
});
await tsgen.flush();
Now if you run your generate command, TS Genie will create generated/index.ts file with Person interface.
export interface Person {
  firstname: string;
  age?: number;
}