| field | 설명 |
|---|---|
| *.constant.ts | via() 함수를 사용하여 스칼라 스키마를 정의하고 enumOf()를 사용하여 enum을 정의합니다. 여기서 필드, 타입, 기본값 및 유효성 검사 규칙을 선언합니다. |
| *.dictionary.ts | scalarDictionary() 빌더 패턴을 사용하여 국제화를 제공합니다. 모델 이름, 필드 레이블, 설명 및 enum 값에 대한 번역을 정의합니다. |
| *.document.ts | by() 함수를 사용하여 기능을 확장하는 선택적 파일입니다. 데이터 변환 및 계산된 값을 위한 커스텀 메서드를 추가합니다. |
via() 함수를 사용하여 스칼라 스키마를 정의하고 enumOf()를 사용하여 enum을 정의합니다. 여기서 필드, 타입, 기본값 및 유효성 검사 규칙을 선언합니다.
scalarDictionary() 빌더 패턴을 사용하여 국제화를 제공합니다. 모델 이름, 필드 레이블, 설명 및 enum 값에 대한 번역을 정의합니다.
by() 함수를 사용하여 기능을 확장하는 선택적 파일입니다. 데이터 변환 및 계산된 값을 위한 커스텀 메서드를 추가합니다.
| field | 설명 |
|---|---|
| enumOf(name, values) | 타입이 지정된 enum 클래스를 생성합니다. 첫 번째 인수는 enum 이름(dictionary에서 사용), 두 번째는 타입 안전을 위해 "as const"가 포함된 값 배열입니다. |
| via((field) => ({...})) | 타입이 지정된 필드를 가진 스칼라 클래스를 생성합니다. field() 함수는 타입과 기본값, 유효성 검사 등을 위한 선택적 구성을 받습니다. |
| Field Options | 옵션에는: default (정적 또는 함수), min/max (숫자용), minlength/maxlength (문자열용), validate (커스텀 검증 함수)가 포함됩니다. |
타입이 지정된 enum 클래스를 생성합니다. 첫 번째 인수는 enum 이름(dictionary에서 사용), 두 번째는 타입 안전을 위해 "as const"가 포함된 값 배열입니다.
타입이 지정된 필드를 가진 스칼라 클래스를 생성합니다. field() 함수는 타입과 기본값, 유효성 검사 등을 위한 선택적 구성을 받습니다.
옵션에는: default (정적 또는 함수), min/max (숫자용), minlength/maxlength (문자열용), validate (커스텀 검증 함수)가 포함됩니다.
| field | 설명 |
|---|---|
| scalarDictionary([languages]) | 지원되는 언어 배열로 초기화합니다. 순서는 번역 배열에서 어떤 인덱스가 어떤 언어에 해당하는지를 결정합니다. |
| .of((t) => ...) | 스칼라 자체의 이름과 설명을 정의합니다. 레이블에는 t([en, ko])를, 설명에는 .desc([en, ko])를 사용합니다. |
| .model<Type>((t) => ({...})) | 각 필드에 대한 번역을 정의합니다. 제네릭 타입은 모든 필드가 커버되도록 보장합니다. 각 필드는 레이블과 설명을 가집니다. |
| .enum<Type>(name, (t) => ({...})) | enum 값에 대한 번역을 정의합니다. 첫 번째 인수는 enum 이름(enumOf()와 일치), 두 번째는 각 값에 대한 번역을 정의합니다. |
지원되는 언어 배열로 초기화합니다. 순서는 번역 배열에서 어떤 인덱스가 어떤 언어에 해당하는지를 결정합니다.
스칼라 자체의 이름과 설명을 정의합니다. 레이블에는 t([en, ko])를, 설명에는 .desc([en, ko])를 사용합니다.
각 필드에 대한 번역을 정의합니다. 제네릭 타입은 모든 필드가 커버되도록 보장합니다. 각 필드는 레이블과 설명을 가집니다.
enum 값에 대한 번역을 정의합니다. 첫 번째 인수는 enum 이름(enumOf()와 일치), 두 번째는 각 값에 대한 번역을 정의합니다.
| field | 설명 |
|---|---|
| by(cnst.ClassName) | 상수 클래스를 감싸고 메서드 추가를 활성화합니다. 이름 충돌을 피하기 위해 상수를 cnst로 임포트합니다. |
| Custom Methods | 계산된 속성, 유효성 검사 헬퍼, 변환 메서드를 클래스 본문에 직접 추가합니다. |
| Access Fields | 'this'를 사용하여 상수 파일에 정의된 모든 필드에 접근합니다. TypeScript가 완전한 자동 완성을 제공합니다. |
상수 클래스를 감싸고 메서드 추가를 활성화합니다. 이름 충돌을 피하기 위해 상수를 cnst로 임포트합니다.
계산된 속성, 유효성 검사 헬퍼, 변환 메서드를 클래스 본문에 직접 추가합니다.
'this'를 사용하여 상수 파일에 정의된 모든 필드에 접근합니다. TypeScript가 완전한 자동 완성을 제공합니다.
| field | 설명 |
|---|---|
| Scalar Directory | camelCase (e.g., encourageInfo) |
| Constant File | [name].constant.ts (e.g., encourageInfo.constant.ts) |
| Dictionary File | [name].dictionary.ts (e.g., encourageInfo.dictionary.ts) |
| Document File | [name].document.ts (e.g., encourageInfo.document.ts) |
| Scalar Class | PascalCase (e.g., EncourageInfo) |
| Enum Class | PascalCase (e.g., Journey, LinkType) |
| Enum Values | camelCase (e.g., firstJoin, waitPay) |
camelCase (e.g., encourageInfo)
[name].constant.ts (e.g., encourageInfo.constant.ts)
[name].dictionary.ts (e.g., encourageInfo.dictionary.ts)
[name].document.ts (e.g., encourageInfo.document.ts)
PascalCase (e.g., EncourageInfo)
PascalCase (e.g., Journey, LinkType)
camelCase (e.g., firstJoin, waitPay)
| field | 설명 |
|---|---|
| Design for Reusability | 여러 모듈에서 사용할 수 있는 스칼라를 만드세요. 주소, 연락처 정보, 상태 추적과 같은 공통 데이터 패턴을 생각해보세요. |
| Keep Scalars Focused | 각 스칼라는 단일 개념을 나타내야 합니다. 스칼라가 너무 커지면 더 작고 조합 가능한 조각으로 분리하는 것을 고려하세요. |
| Use Proper Defaults | 선택적 필드에 합리적인 기본값을 제공하세요. 생성 시 계산되어야 하는 동적 값에는 함수 기본값 (예: () => dayjs())을 사용하세요. |
| Complete Dictionary Coverage | 항상 모든 필드와 enum 값에 대한 번역을 제공하세요. 타입 시스템을 사용하여 누락되는 것이 없도록 하세요. |
| Validate at Field Level | min/max, minlength/maxlength 및 커스텀 validate 함수와 같은 필드 옵션을 사용하여 스키마 수준에서 데이터 무결성을 보장하세요. |
여러 모듈에서 사용할 수 있는 스칼라를 만드세요. 주소, 연락처 정보, 상태 추적과 같은 공통 데이터 패턴을 생각해보세요.
각 스칼라는 단일 개념을 나타내야 합니다. 스칼라가 너무 커지면 더 작고 조합 가능한 조각으로 분리하는 것을 고려하세요.
선택적 필드에 합리적인 기본값을 제공하세요. 생성 시 계산되어야 하는 동적 값에는 함수 기본값 (예: () => dayjs())을 사용하세요.
항상 모든 필드와 enum 값에 대한 번역을 제공하세요. 타입 시스템을 사용하여 누락되는 것이 없도록 하세요.
min/max, minlength/maxlength 및 커스텀 validate 함수와 같은 필드 옵션을 사용하여 스키마 수준에서 데이터 무결성을 보장하세요.
| field | 설명 |
|---|---|
| Domain Models | field([ScalarClass])를 사용하여 모델에 스칼라 임베드 |
| GraphQL | API 계약을 위한 자동 생성된 타입 및 enum |
| Validation | 필드 옵션을 통한 런타임 타입 검사 |
| Internationalization | scalarDictionary()를 통한 일관된 용어 |
| UI Components | Enum 값을 선택 필드에서 직접 사용 가능 |
| Dictionary Sharing | dictionary 간 enum 번역 재사용 |
field([ScalarClass])를 사용하여 모델에 스칼라 임베드
API 계약을 위한 자동 생성된 타입 및 enum
필드 옵션을 통한 런타임 타입 검사
scalarDictionary()를 통한 일관된 용어
Enum 값을 선택 필드에서 직접 사용 가능
dictionary 간 enum 번역 재사용
