IT

스벨트에서 readable만 노출하기(Svelte - writable to readable)

紫紅 2022. 10. 10. 16:56
반응형

나는 특정 모듈에서 `store`의 `writable`은 이용하되, `readable`인터페이스만 노출하고 싶었다. 데이터 쓰기 인터페이스를 함수나 커맨드 형태(MVVM 패턴)로만 제공할 수 있어야, 프로젝트가 커졌을 때, 문제가 되지 않기 때문이다.

 

# Example - convert `writeable` to `readable`

import {writable} from 'svelte/store'

// writable의 업데이트 기능은 이 모듈에서만 사용(export하지 않음)
const _now = writable(Date.now())

// `export const 변수명 = readable(값)`과 같은 효과
export const now = {subscribe: _now.subscribe}

// 필요에 따라, 값 변경관련 인터페이스(함수, 클래스, 클래스메소드)를 export해주면 다른 개발자에 의해 값이 임의적으로 변경되는 사이드이펙트를 줄일 수 있다.
// 지금은 시스템에 의해서만 값이 변경되고, 그 값을 다른 컴포넌트에서 갖다 쓰는 구조.
function updateNow(ms:number = 1000) {  // 1000ms = 1초
  setTimeout(() => {
  	_now.set(Date.now())
    return updateNow()
  }, ms)
}
updateNow()

 

---

더 좋은 방법이 있다면, 공유 바랍니다.

반응형