rbxts-transformer-setget

1.0.9 • Public • Published

rbxts-transformer-setget

This transformer implements Getters and Setters to roblox-ts by converting them into methods and method calls.

Please note that this does not solve the problems pertaining to why Getters/Setters were removed from roblox-ts in the first place as detailed here but should work fine if you avoid union types that have Getters/Setters.

Usage

To use this transformer you have to add rbxts-transformer-setget to your tsconfig.json file in compilerOptions config

"plugins": [
	{
		"transform": "rbxts-transformer-setget"
	}
]

If you use eslint you will need to add the following rule to your .eslintrc file in the rules config

	"rules": {
		"roblox-ts/no-getters-or-setters": "off"
	}

Example

// input.ts
class ExampleClass {
  private m_Member = 1;
  public get Member(): number {
    return this.m_Member;
  }
  public set Member(str: number) {
    this.m_Member = str;
  }
}

const example = new ExampleClass();
example.Member = 8;
print(example.Member);
-- output.lua
local ExampleClass
do
	ExampleClass = setmetatable({}, {
		__tostring = function()
			return "ExampleClass"
		end,
	})
	ExampleClass.__index = ExampleClass
	function ExampleClass.new(...)
		local self = setmetatable({}, ExampleClass)
		return self:constructor(...) or self
	end
	function ExampleClass:constructor()
		self.m_Member = 1
	end
	function ExampleClass:_getMember()
		return self.m_Member
	end
	function ExampleClass:_setMember(str)
		self.m_Member = str
	end
end
local example = ExampleClass.new()
example:_setMember(8)
print(example:_getMember())

Package Sidebar

Install

npm i rbxts-transformer-setget

Weekly Downloads

7

Version

1.0.9

License

ISC

Unpacked Size

13.5 kB

Total Files

5

Last publish

Collaborators

  • jack-trent