检查javascript对象属性类型

时间:2017-11-29 14:28:25

标签: javascript performance

我想知道是否有办法在javascript中定义对象属性类型。我的意思是,如果我有一个对象并且我想确保属性a是一个字符串,有没有办法做到这一点?

到目前为止,我已经找到了使用getter和setter的解决方案:

const anObject = {

    "value": "a value", 

    get a () {
        return this.value 
    }, 

    set a (val) {
        if (typeof(val) == "string") {
            this.value = val
        } else {
            throw "Invalid type!"
        }
    }

}

效率这么高吗?有一个更好的方法吗?谢谢!

P.S。我知道js是一种非类型语言,所以我不指望任何神奇的答案,但也许人们已经提出了一些聪明的解决方法。

1 个答案:

答案 0 :(得分:0)

我会将值设为对象的属性,并使用模块reveakl模式来封装它。现在,没有任何东西可以阻止我为你的价值分配一个数字或其他东西

function value () {
  let value = "";
  return {
    get () {
      return value
    },
    set (val) {
      if (typeof val !== 'string') {
        return 
      }
      value = val
    }
  } 
}