Skip to content

TypeScriptToLua plugin that provides syntax sugar for Userdata types in lua

License

Notifications You must be signed in to change notification settings

ts-defold/tstl-userdata-sugar

Repository files navigation

tstl-userdata-sugar

Chat with us!

TypeScriptToLua plugin that provides syntax sugar for Userdata types in lua

Features

... => unpack

Support array-like user data object destructuring.

Lua's unpack function only supports unpacking tables, even if the required metamethods of __index and __len are present to treat them like an array.

To support this feature we detect a ... of an Array<T> & LuaUserdata type and implicitly inject a call to map(x => x). This then returns a table from the userdata and passes it to unpack. There may exist more efficient methods of unpacking your array data directly from the userdata type, and you may want to avoid this syntax sugar if moving large amounts of data.

declare type UserDataArray<T> = Array<T> & LuaUserdata & {
};

declare function makeUserData(): UserDataArray<number>;

const userData: UserDataArray<number> = makeUserData();
console.log([...userData]);

About

TypeScriptToLua plugin that provides syntax sugar for Userdata types in lua

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published