Documentation / @andrew_l/tl-pack / defineStructure
Function: defineStructure() ​
defineStructure<
PropsOptions
,T
>(__namedParameters
):Constructor
<T
>
Create binary structure definition with type safety and performance optimization
Type Parameters ​
PropsOptions ​
PropsOptions
extends ObjectPropsOptions
<Data
>
T ​
T
extends Data
= ExtractPropTypes
<PropsOptions
>
Parameters ​
__namedParameters ​
DefineStructureOptions
<PropsOptions
>
Returns ​
Constructor
<T
>
Examples ​
ts
// Define a user structure
const User = defineStructure({
name: 'User',
version: 1,
checksum: true,
properties: {
id: { type: Number, required: true },
name: { type: String, required: true },
email: { type: String, required: false },
isActive: { type: Boolean, required: true },
createdAt: { type: Date, required: true },
tags: { type: Array, required: false }
}
});
// Create and serialize a user
const user = new User({
id: 123,
name: 'John Doe',
email: 'john@example.com',
isActive: true,
createdAt: new Date(),
tags: ['admin', 'verified']
});
const buffer = user.toBuffer();
const restored = User.fromBuffer(buffer);
ts
// Define nested structures
const Address = defineStructure({
name: 'Address',
version: 1,
properties: {
street: { type: String, required: true },
city: { type: String, required: true },
zipCode: { type: String, required: true }
}
});
const Person = defineStructure({
name: 'Person',
version: 1,
properties: {
name: { type: String, required: true },
address: { type: Address, required: false }
}
});
ts
// Using with complex data types
const GameState = defineStructure({
name: 'GameState',
version: 2,
checksum: true,
properties: {
playerData: { type: Object, required: true }, // Untrusted data
screenshot: { type: Uint8Array, required: false }, // Binary data
timestamp: { type: Date, required: true },
metadata: { type: Object, required: false }
}
});