Skip to Content

TypeIs 기본 타입

숫자, 문자열, 불리언, 날짜 타입입니다. 엔티티, DTO, 라우트 옵션에서 모두 사용할 수 있습니다. 기본 타입은 @asapjs/schema 패키지에서 정의되며, @asapjs/sequelize가 데코레이터로 래핑하여 제공합니다.

import { TypeIs } from '@asapjs/sequelize';

이 페이지에서 찾을 수 있는 것

심볼SequelizeSwagger고유 옵션
TypeIs.INTINTEGERinteger / int32min, max
TypeIs.BIGINTBIGINTinteger / int32
TypeIs.LONGINTEGERinteger / int64
TypeIs.FLOATFLOATinteger / floatlength, decimals, min, max
TypeIs.DECIMALDECIMALinteger / floatprecision, scale
TypeIs.DOUBLEDOUBLEnumber / double
TypeIs.STRINGSTRINGstringminLength, maxLength, pattern, enum
TypeIs.TEXTTEXTstringlength
TypeIs.PASSWORDSTRING(512)string / password
TypeIs.BOOLEANBOOLEANboolean
TypeIs.DATEONLYDATEONLYstring / date
TypeIs.DATETIMEDATEstring / date-time

이중 사용법: 데코레이터 vs. 값

모든 TypeIs.* 함수는 두 가지 방식으로 동작합니다.

프로퍼티 데코레이터로 (엔티티 또는 DTO 클래스에서):

@TypeIs.STRING({ comment: 'Email address' }) email: string;

일반 값으로 (라우트 IOptions 또는 복합 타입의 인수로):

response: TypeIs.BOOLEAN() TypeIs.ARRAY(TypeIs.INT())

공통 옵션 (SchemaOptions)

모든 TypeIs 타입이 공유하는 기본 옵션입니다:

옵션타입설명
commentstringSequelize 컬럼 코멘트 및 Swagger description
optionalbooleantrue이면 allowNull: true
defaultanySequelize defaultValue
exampleanySwagger example 값

추가로 Sequelize ModelAttributeColumnOptions(primaryKey, autoIncrement, unique, allowNull, defaultValue 등)도 전달할 수 있습니다.


옵션이 있는 타입

TypeIs.INT

TypeIs.INT(options?: IntOptions)
고유 옵션타입설명
minnumber최소값 검증
maxnumber최대값 검증
항목
Sequelize 타입DataTypes.INTEGER
Swagger 타입integer / 포맷 int32
fixValueparseInt(String(o), 10) — 32비트 정수로 변환; null/undefined는 그대로 반환
@TypeIs.INT({ primaryKey: true, autoIncrement: true, comment: 'User ID' }) id: number;

TypeIs.FLOAT

TypeIs.FLOAT(options?: FloatOptions)
고유 옵션타입설명
lengthnumber정밀도 길이
decimalsnumber소수점 이하 자릿수
minnumber최소값 검증
maxnumber최대값 검증
항목
Sequelize 타입DataTypes.FLOAT(length, decimals)
Swagger 타입integer / 포맷 float
fixValueparseFloat(String(o))

TypeIs.DECIMAL

TypeIs.DECIMAL(options?: DecimalOptions)
고유 옵션타입설명
precisionnumber전체 자릿수
scalenumber소수점 이하 자릿수
항목
Sequelize 타입DataTypes.DECIMAL(precision, scale)
Swagger 타입integer / 포맷 float
fixValueparseFloat(String(o))
@TypeIs.DECIMAL({ precision: 10, scale: 2, comment: 'Price' }) price: number;

TypeIs.STRING

TypeIs.STRING(options?: StringOptions)
고유 옵션타입설명
minLengthnumber최소 길이 검증
maxLengthnumber최대 길이 (Sequelize VARCHAR(maxLength), 기본 255)
patternRegExp정규식 검증
enumstring[]허용 값 목록 검증
항목
Sequelize 타입DataTypes.STRING(maxLength || 255)
Swagger 타입string
fixValueString(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
fixValueString(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
fixValueparseInt(String(o), 10)

TypeIs.LONG

TypeIs.LONG(options?: SchemaOptions)
항목
Sequelize 타입DataTypes.INTEGER
Swagger 타입integer / 포맷 int64
fixValueparseInt(String(o), 10)

Swagger 포맷이 int64여야 하는 경우(예: Unix 타임스탬프) INT 대신 LONG을 사용하세요. 내부적으로는 BigIntType의 별칭입니다.


TypeIs.DOUBLE

TypeIs.DOUBLE(options?: SchemaOptions)
항목
Sequelize 타입DataTypes.DOUBLE
Swagger 타입number / 포맷 double
fixValueparseFloat(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_atupdated_at 컬럼에 사용됩니다.

@TypeIs.DATETIME({ comment: 'Created at' }) created_at: Date;

관련 항목

Last updated on