我想知道是否有办法在 NodeJs 的 CLASS 中处理以下场景。我有一个类可以称之为联系人,它有一堆字符串字段,但也有一个电子邮件类数组。我如何在 JavaScript 中指定一个值实际上应该是另一个类的数组,因为我无法在 JavaScript 中指定数据类型。另外,我如何限制类中某个字段的值,例如我的电子邮件类有一个名为 type 的字段,它可以是“home|work|other”
最佳答案
尽管 Javascript 不会为您提供静态类型,但由于您使用的是 Node 并且可以控制所使用的版本,因此您还有一些其他选择。您可以使用代理。如果您的电子邮件数组是代理,您可以控制 setter 并只允许添加您想要添加的内容。例如(不确定此代码段是否会在所有浏览器中运行):
class Email {
constructor(addr) {
this.address = addr
}
}
// proxy array to check for values on set
let emails = new Proxy([], {
set: function(target, property, value, receiver) {
if (!(value instanceof Email)) {
if (property != "length")
console.log(`Array can only contain Email instances "${value}" is an incompatible type`)
return true
}
target[property] = value;
return true;
}
});
// fails
emails.push(1)
console.log("current array:", emails)
// works
let e = new Email("test@example.com")
emails.push(e)
console.log("current array:", emails)
// fails
emails[0] = "test"
console.log("current array:", emails)
关于javascript - NodeJS 和类限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54045377/