ts-defold / tstl-userdata-sugar

TypeScriptToLua plugin that provides syntax sugar for Userdata types in lua

Home Page:https://ts-defold.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

https://ts-defold.dev

License:MIT License


Languages

Language:TypeScript 82.6%Language:JavaScript 17.4%