document 파일 (*.document.ts)은 by() 함수를 사용하여 커스텀 메서드로 스칼라를 확장하는 선택적 파일입니다. constant.ts가 데이터 구조를 정의하고 dictionary.ts가 번역을 제공하는 반면, document.ts는 런타임 동작과 유틸리티 메서드를 추가합니다.
이 가이드는 by() 함수 문법, document.ts를 사용해야 할 때, 메서드 추가 패턴을 다룹니다.
📁파일 구조
🎯사용 시기
계산된 속성 추가
유틸리티 메서드 추가
데이터 변환 로직 추가
유효성 검사 헬퍼 추가
by()를 사용한 기본 문법
by() 함수는 constant 클래스를 감싸고 인스턴스 메서드를 추가할 수 있게 합니다. constant의 모든 필드와 타입을 유지하면서 기능을 확장할 수 있습니다.
기본 구조
각 부분을 이해해봅시다:
📦import { by } from '@akanjs/document'
@akanjs/document에서 by() 함수를 import합니다. 스칼라 document에 필요한 유일한 import입니다.
🔗import * as cnst
constant 모듈을 'cnst' 네임스페이스로 import합니다. 이 규칙은 constant 클래스와 document 클래스 간의 이름 충돌을 방지합니다.
⚡extends by(cnst.YourScalar)
by() 함수는 constant로부터 기본 클래스를 생성합니다. document 클래스는 이를 확장하여 모든 필드를 상속하고 메서드를 추가합니다.
최소 Document (메서드 없음)
대부분의 스칼라 document 파일은 최소한입니다 - 메서드를 추가하지 않고 constant 클래스를 단순히 감쌉니다. 이는 일관성과 향후 확장 가능성을 위해 유용합니다.
빈 document 파일도 유용합니다! 향후 메서드를 위한 명확한 확장 포인트를 제공하고 일관된 파일 구조를 유지합니다.
커스텀 메서드 추가하기
클래스 본문에 인스턴스 메서드를 직접 추가할 수 있습니다. 이 메서드들은 'this'를 통해 모든 필드에 접근할 수 있으며 계산, 유효성 검사 또는 변환을 수행할 수 있습니다.
price.document.ts
document 메서드의 일반적인 패턴:
🧮계산된 속성
기존 필드에서 값을 계산하는 메서드 (예: getPercentage(), getTotal()).
✅상태 확인
조건을 확인하고 불리언을 반환하는 메서드 (예: isActive(), isExpired(), hasStock()).
🔄데이터 변환
데이터를 변환하거나 포맷하는 메서드 (예: getFormattedDate(), getDisplayName()).
🔍파서/추출기
필드에서 특정 정보를 추출하는 메서드 (예: pod 이름을 파싱하는 getService()).
메서드 예시
스칼라 document에 추가할 수 있는 메서드의 실용적인 예시입니다:
Stock - 계산 & 상태
DateRange - 포맷팅
Constant vs Document
constant.ts 또는 document.ts에서 메서드를 정의할 수 있습니다. 각각을 사용할 때: