TypeIs 기본 타입
숫자, 문자열, 불리언, 날짜 타입입니다. 엔티티, DTO, 라우트 옵션에서 모두 사용할 수 있습니다. 기본 타입은 @asapjs/schema 패키지에서 정의되며, @asapjs/sequelize가 데코레이터로 래핑하여 제공합니다.
import { TypeIs } from '@asapjs/sequelize';이 페이지에서 찾을 수 있는 것
| 심볼 | Sequelize | Swagger | 고유 옵션 |
|---|---|---|---|
TypeIs.INT | INTEGER | integer / int32 | min, max |
TypeIs.BIGINT | BIGINT | integer / int32 | — |
TypeIs.LONG | INTEGER | integer / int64 | — |
TypeIs.FLOAT | FLOAT | integer / float | length, decimals, min, max |
TypeIs.DECIMAL | DECIMAL | integer / float | precision, scale |
TypeIs.DOUBLE | DOUBLE | number / double | — |
TypeIs.STRING | STRING | string | minLength, maxLength, pattern, enum |
TypeIs.TEXT | TEXT | string | length |
TypeIs.PASSWORD | STRING(512) | string / password | — |
TypeIs.BOOLEAN | BOOLEAN | boolean | — |
TypeIs.DATEONLY | DATEONLY | string / date | — |
TypeIs.DATETIME | DATE | string / date-time | — |
이중 사용법: 데코레이터 vs. 값
모든 TypeIs.* 함수는 두 가지 방식으로 동작합니다.
프로퍼티 데코레이터로 (엔티티 또는 DTO 클래스에서):
@TypeIs.STRING({ comment: 'Email address' })
email: string;일반 값으로 (라우트 IOptions 또는 복합 타입의 인수로):
response: TypeIs.BOOLEAN()
TypeIs.ARRAY(TypeIs.INT())공통 옵션 (SchemaOptions)
모든 TypeIs 타입이 공유하는 기본 옵션입니다:
| 옵션 | 타입 | 설명 |
|---|---|---|
comment | string | Sequelize 컬럼 코멘트 및 Swagger description |
optional | boolean | true이면 allowNull: true |
default | any | Sequelize defaultValue |
example | any | Swagger example 값 |
추가로 Sequelize ModelAttributeColumnOptions(primaryKey, autoIncrement, unique, allowNull, defaultValue 등)도 전달할 수 있습니다.
옵션이 있는 타입
TypeIs.INT
TypeIs.INT(options?: IntOptions)| 고유 옵션 | 타입 | 설명 |
|---|---|---|
min | number | 최소값 검증 |
max | number | 최대값 검증 |
| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.INTEGER |
| Swagger 타입 | integer / 포맷 int32 |
fixValue | parseInt(String(o), 10) — 32비트 정수로 변환; null/undefined는 그대로 반환 |
@TypeIs.INT({ primaryKey: true, autoIncrement: true, comment: 'User ID' })
id: number;TypeIs.FLOAT
TypeIs.FLOAT(options?: FloatOptions)| 고유 옵션 | 타입 | 설명 |
|---|---|---|
length | number | 정밀도 길이 |
decimals | number | 소수점 이하 자릿수 |
min | number | 최소값 검증 |
max | number | 최대값 검증 |
| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.FLOAT(length, decimals) |
| Swagger 타입 | integer / 포맷 float |
fixValue | parseFloat(String(o)) |
TypeIs.DECIMAL
TypeIs.DECIMAL(options?: DecimalOptions)| 고유 옵션 | 타입 | 설명 |
|---|---|---|
precision | number | 전체 자릿수 |
scale | number | 소수점 이하 자릿수 |
| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.DECIMAL(precision, scale) |
| Swagger 타입 | integer / 포맷 float |
fixValue | parseFloat(String(o)) |
@TypeIs.DECIMAL({ precision: 10, scale: 2, comment: 'Price' })
price: number;TypeIs.STRING
TypeIs.STRING(options?: StringOptions)| 고유 옵션 | 타입 | 설명 |
|---|---|---|
minLength | number | 최소 길이 검증 |
maxLength | number | 최대 길이 (Sequelize VARCHAR(maxLength), 기본 255) |
pattern | RegExp | 정규식 검증 |
enum | string[] | 허용 값 목록 검증 |
| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.STRING(maxLength || 255) |
| Swagger 타입 | string |
fixValue | String(o) — 임의의 값을 문자열로 변환; null/undefined는 그대로 반환 |
@TypeIs.STRING({ unique: true, comment: 'Email (unique)' })
email: string;TypeIs.TEXT
TypeIs.TEXT(options?: TextOptions)| 고유 옵션 | 타입 | 설명 |
|---|---|---|
length | 'tiny' | 'medium' | 'long' | MySQL TEXT 크기 |
| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.TEXT(length) |
| Swagger 타입 | string |
fixValue | String(o) (STRING과 동일) |
@TypeIs.TEXT({ comment: 'Post content' })
content: string;TypeIs.PASSWORD
TypeIs.PASSWORD(options?: StringOptions)StringOptions를 상속하지만 추가 고유 옵션은 없습니다.
| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.STRING(512) |
| Swagger 포맷 | string / 포맷 password |
fixValue | 없음 (변환 없음) |
PASSWORD는 데이터베이스에 항상 STRING(512)로 저장됩니다. Swagger에서는 format: 'password'로 렌더링되어 UI 클라이언트가 입력 필드를 마스킹합니다.
@TypeIs.PASSWORD({ comment: 'Hashed password (bcrypt)' })
password: string;기본 옵션만 사용하는 타입
다음 타입들은 공통 SchemaOptions만 받으며 고유 옵션이 없습니다.
TypeIs.BIGINT
TypeIs.BIGINT(options?: SchemaOptions)| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.BIGINT |
| Swagger 타입 | integer / 포맷 int32 |
fixValue | parseInt(String(o), 10) |
TypeIs.LONG
TypeIs.LONG(options?: SchemaOptions)| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.INTEGER |
| Swagger 타입 | integer / 포맷 int64 |
fixValue | parseInt(String(o), 10) |
Swagger 포맷이 int64여야 하는 경우(예: Unix 타임스탬프) INT 대신 LONG을 사용하세요. 내부적으로는 BigIntType의 별칭입니다.
TypeIs.DOUBLE
TypeIs.DOUBLE(options?: SchemaOptions)| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.DOUBLE |
| Swagger 타입 | number / 포맷 double |
fixValue | parseFloat(String(o)) |
TypeIs.BOOLEAN
TypeIs.BOOLEAN(options?: SchemaOptions)| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.BOOLEAN |
| Swagger 타입 | boolean |
fixValue | 'true' → true, 'false' → false, 그 외 → Boolean(!!o) |
이 변환은 불리언이 문자열로 전달되는 쿼리 스트링 파라미터를 처리합니다.
@TypeIs.BOOLEAN({ comment: 'Whether the account is active' })
is_active: boolean;TypeIs.DATEONLY
TypeIs.DATEONLY(options?: SchemaOptions)| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.DATEONLY |
| Swagger 타입 | string / 포맷 date |
fixValue | 없음 |
시간 없이 날짜만 저장합니다 (YYYY-MM-DD).
TypeIs.DATETIME
TypeIs.DATETIME(options?: SchemaOptions)| 항목 | 값 |
|---|---|
| Sequelize 타입 | DataTypes.DATE |
| Swagger 타입 | string / 포맷 date-time |
fixValue | 없음 |
전체 타임스탬프를 저장합니다. 명시적으로 선언하는 created_at과 updated_at 컬럼에 사용됩니다.
@TypeIs.DATETIME({ comment: 'Created at' })
created_at: Date;관련 항목
- TypeIs 특수 타입 — ENUM, JSON
- TypeIs 관계 타입 — FOREIGNKEY, BELONGSTO
- TypeIs 복합 타입 — DTO, QUERY, ARRAY
- @Table 데코레이터 — 엔티티 정의
- @asapjs/sequelize 개요 — TypeIs 빠른 참조 테이블