@Data
Composite data-class helper: getters, setters (non-readonly fields), equals, and toString via codegen.
| Kind | Codegen |
| Backends | legacy, stage3 |
Requires generate | Yes |
When to use
- Plain data holders (DTOs, entities, config objects) where you want Lombok-style accessors without hand-writing them
- Together with
@Builderfor fluent construction
When not to use
- Classes with complex invariant logic in constructors (v0.1 does not inject a generated constructor)
- When you only need
toString— use@ToStringalone
Example
ts
import { Data } from 'lombok-typescript/legacy';
@Data
export class User {
name!: string;
readonly id!: string;
age?: number;
}bash
lombok-ts generatets
import { User } from './user.js';
import { applyAllGenerated } from '../.lombok/src/user.lombok.js';
applyAllGenerated({ User });
const u = new User();
u.name = 'Ada';
u.getName(); // generated getterCodegen steps
lombok-ts generateemits accessor functions andapplyUserGenerated.- Include
.lombok/**/*.tsand.lombok/**/*.d.tsin tsconfig. - Call
applyAllGenerated({ User })once at startup.
v0.1 limitations
- Does not replace or auto-wire a multi-argument constructor; assign fields after
new User()or use@Builder. readonlyfields get getters only (no setter) in generated code.equalsuses referential field equality (===), not deep comparison.