我想知道是否有办法在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是一种非类型语言,所以我不指望任何神奇的答案,但也许人们已经提出了一些聪明的解决方法。
答案 0 :(得分:0)
我会将值设为对象的属性,并使用模块reveakl模式来封装它。现在,没有任何东西可以阻止我为你的价值分配一个数字或其他东西
function value () {
let value = "";
return {
get () {
return value
},
set (val) {
if (typeof val !== 'string') {
return
}
value = val
}
}
}