# 定义枚举（可跨表复用）

枚举定义与字段分离：`defineEnum` 产生共享定义（纯值对象），`enumField` 引用它。同一枚举可被多张表 / 多个 DTO 复用，只生成一次。

```ts
import { defineEnum, enumField } from '@pylonts/dsl';

// 共享定义（_common.ts 等公共文件）
export const AcquiringType = defineEnum('AcquiringType', 'string', [
  { symbol: 'WECHAT', value: 'wechat', label: '微信' },
  { symbol: 'UNIONPAY', value: 'unionpay', label: '银联商务' },
]);

// 字段引用（每表独立实例）
buildTable('merchant', { columns: { acquiring_type: enumField({ enum: AcquiringType }) }, ... });
buildTable('order',    { columns: { acquiring_type: enumField({ enum: AcquiringType }) }, ... });
```

- 字段实例每表独立（列名、可选性随表），枚举定义全局共享。
- 枚举由 enum-driver 生成独立文件；typebox-driver 只渲染 `Type.Enum(名称)` + import 引用，不内联。

## 生成枚举源码

见 [driver.md](./driver.md)。