Hansanghyeon / spec-pattern-ts

Specification pattern (typescript)

Home Page:https://npmjs.com/package/spec-pattern-ts

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Static Badge

using

npm install spec-pattern-ts
import { Spec, type ISpecification } from 'spec-pattern-ts'

const product = new Product()

// 새롭게 추가된 상품인지 확인하는 스펙
const isNewSpec: ISpecification<Product> = new Spec(
  (candidate) => candidate.isNew === true
)
// 상품의 갯수가 0개이상인지 확인하는 스펙
const isQtyChangedSpec: ISpecification<Product> = new Spec(
  (candidate) => candidate.qty > 0
)
// 새롭게 추가된 상품이 아니고 기존 상품이면서 갯수가 변경되고 1개 이상일때
const isOriginalAndQtyChangedSpec: ISpecification<Product> =
  isNewSpec
    .not()
    .and(isQtyChangedSpec)

if (isNewSpec.isSatisfiedBy(product)) {
  return 'A'
}
if (isOriginalAndQtyChangedSpec.isSatisfiedBy(product)) {
  return 'B'
}

Feature

  • ts 에제가있지만 항상 타입이 unkown인 문제
  • 제네릭타입으로 받아올수있도록 타입을 추가
  • Spec 클래스를 추가

About

Specification pattern (typescript)

https://npmjs.com/package/spec-pattern-ts


Languages

Language:TypeScript 100.0%