rbxts-transformer-t-new-new
v0.2.0
Published
TypeScript transformer which converts TypeScript types to t entities
Downloads
8
Maintainers
Readme
rbxts-transformer-t-new-new
Fork of: https://github.com/alihsaas/rbxts-transformer-t
TypeScript transformer which converts TypeScript types to t entities
Installation
To install this package run the following command:
npm i rbxts-transformer-t-new-new
yarn add rbxts-transformer-t-new-new
pnpm i rbxts-transformer-t-new-new
Usage
To use this transformer you have to add rbxts-transformer-t-new-new
to your tsconfig.json
file in compilerOptions
config
"plugins": [
{
"transform": "rbxts-transformer-t-new-new",
}
]
Before
import { $terrify } from "rbxts-transformer-t-new-new";
interface Data {
Color: Color3;
Name: string;
Material: Enum.Material;
}
const tType = $terrify<Data>();
After
local t = TS.import(script, TS.getModule(script, "t").lib.ts).t
local tType = t.interface({
Color = t.Color3,
Name = t.string,
Material = t.enum(Enum.Material),
})
About this transformer
What it can do
- Transform almost all TypeScript types into t models:
- null, undefined, void, unknown
- string, boolean and number literals
- string, boolean, number, any and thread types
- arrays, tuples, maps, objects and functions
- type unions and intersections
- interfaces types
- roblox types such as Enum Axes
- Enums to enum ex. Enum.Material => t.enum(Enum.Material)
- Compute expressions passed into it.
For example, this expression
$terrify<Omit<{ foo: 'bar', bar: number } & { data: string }, 'bar'>>()
will be converted into
local t = TS.import(script, TS.getModule(script, "t").lib.ts).t
t.interface({
foo = t.literal("bar"),
data = t.string,
})
What it can't do
Transform classes.
Work with dynamic type parameters, i.e.
$terrify<T>()
in the following code will error:
import { $terrify } from "rbxts-transformer-t-new-new";
function convertEntity<T>(entity: T) {
return $terrify<T>();
}