scalar.document.ts

price.document.ts는 스칼라의 서버 쪽 클래스입니다. constant 클래스를 감싸는 한 줄이고, 앞으로도 그 한 줄로 둡니다.
akan create-scalar price가 다른 기본 파일과 함께 만들어 줍니다. 스칼라에 필드와 라벨만 필요하더라도 이 파일은 지우지 않습니다.
이 페이지에서 쓰는 말
서버와 브라우저가 모두 불러오는 constant 클래스로, 필드와 기본값, 헬퍼 메서드를 담습니다.
by(cnst.Price)
constant 클래스와 같은 필드를 가진 서버 쪽 클래스를 만듭니다.
db.Price
서버 코드에서 쓰는 값의 타입으로, 저장된 필드만 있고 메서드는 없습니다.

파일 전체

constant 파일을 cnst로 import하고, 그 클래스를 by(cnst.Price)로 감쌉니다. 그러면 document 클래스가 constant 클래스와 같은 필드를 갖습니다:
apps/<app>/lib/__scalar/price/price.document.ts
  • 이름은 constant 클래스와 같습니다. price/ 폴더는 cnst.Price를 감싼 Price를 export합니다.
  • 같은 폴더의 파일을 import합니다. 경로는 ./price.constant입니다.
  • 본문은 비워 둡니다. by()가 필드를 모두 가져오고, 헬퍼 메서드는 다음 섹션처럼 constant 클래스에 둡니다.

헬퍼는 constant에 둡니다

라벨, 참·거짓 판별, 작은 계산처럼 스칼라의 필드를 읽는 헬퍼는 constant 클래스에 둡니다. document 클래스에는 감싸는 한 줄만 남깁니다.
쓰는 것
constant
dictionary
document
값 자체 — 서버와 브라우저 공통
필드와 기본값
✓
amount: field(Float, { default: 0 })처럼 값의 모양을 정합니다.
enumOf(…)
✓
Currency 같은 enum 클래스로, 스칼라 클래스 위에 선언합니다.
헬퍼 메서드
✓
getLabel()처럼 표시, 판별, 작은 계산을 맡는 메서드입니다.
라벨
라벨과 설명
✓
모든 필드와 enum 값에 붙는 [en, ko] 라벨과 설명입니다.
서버 전용
by(cnst.Price)
✓
서버 코드에 db.Price 타입을 주는 한 줄짜리 래퍼입니다.
✓이 파일에 둡니다여기 두지 않습니다
그래서 가격 라벨은 constant 파일의 Price에 짧은 메서드로 씁니다:
apps/<app>/lib/__scalar/price/price.constant.ts
  • 짧게 씁니다. 필드를 읽고 표시 값, 참·거짓 값, 작은 계산 결과를 돌려줍니다.
  • 데이터베이스 모듈과는 다릅니다. model.document.ts에는 approve() 같은 체인 메서드가 있지만, 스칼라의 document에는 없습니다.

이 파일을 쓰는 곳

이 파일을 고칠 일은 거의 없지만, 서버 코드는 이 파일의 타입을 씁니다. 스칼라 값을 받는 service 메서드는 그 값을 db.<Scalar> 타입으로 받습니다:
libs/shared/lib/user/user.service.ts
  • db.LeaveInfo는 데이터만 담습니다. LeaveInfo 스칼라의 저장 필드만 있고 메서드는 없습니다.
  • 브라우저 코드는 cnst.LeaveInfo를 씁니다. db 타입은 서버 쪽에만 둡니다.
필요한 것마다 두는 곳
같은 표시나 계산이 여러 곳에서 반복되면 헬퍼를 만듭니다. 데이터를 불러오는 일은 service에 둡니다.
필요한 것파일
↳ 예시
값을 받거나 돌려주는 service 메서드leaveInfo.document.ts
leaveInfo: db.LeaveInfo
상품 카드, 주문 요약, 청구서에서 함께 쓰는 가격 라벨price.constant.ts
price.getLabel()
city와 street로 만드는 주소 요약address.constant.ts
address.getSummary()
거리처럼 값 두 개를 함께 쓰는 계산coordinate.constant.ts
Coordinate.getDistanceKm(a, b)
다른 레코드를 불러오거나 백엔드 service를 호출하는 일<model>.service.ts
this.userModel.getUser(userId)
자주 하는 실수
  • getLabel()을 document 클래스에 쓰는 것. 서버와 브라우저 코드가 모두 import할 수 있는 constant 클래스로 옮깁니다.
  • 한 줄뿐이라고 파일을 지우는 것. 서버 코드의 db.Price가 이 파일에서 나오므로, constant와 dictionary 옆에 그대로 둡니다.
  • 헬퍼 안에서 레코드를 불러오는 것. 헬퍼는 자기 필드만 읽습니다. 쿼리나 service 호출은 상위 모듈의 service에 둡니다.
다음에 읽을 곳

MIT 라이선스 하에 배포되었습니다.

내 AI에 이 문서 연결하기

MCPhttps://akanjs.com/mcp
Copyright © 2026 Akan.js 모든 권리 보유.시스템 관리자bassman