DEV Community

François-Emmanuel CORTES
François-Emmanuel CORTES

Posted on

Use in-closure symbols to reinforce data safety in ES modules and classes

Reinforce data safety in ES modules and classes

guard function

top of the mdule/class file

const SYM_KEEPER = Symbol ('safety-guard-do-not-export')
Enter fullscreen mode Exit fullscreen mode

define inside yout class:

#guard () {
    if (SYM_KEPEER === sym_keeper) {
        return true
    } else {
        throw new Error ('#SAFETY_GUARD!')
    }
}
Enter fullscreen mode Exit fullscreen mode

use in private methods

constructro () {
    // ....
    this.#setup (SYM_KEEPER)
}
#setup (sym_keeper) {
    this.#guard(sym_keeper)
    // ...
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)