【发布时间】:2017-10-15 07:35:30
【问题描述】:
我曾经用常用的 OOP 语言(如 swift 或 java)创建具有类型属性的类:
struct ClassA {
enum Type {
case b, c, d
}
var type: Type
}
然后像这样使用它
let a = ClassA(type: .b)
在 es6 中类似的构造将是:
const Type = {
a: 0,
b: 1,
c: 2,
}
class ClassA {
constructor(type) {
this.type = type
}
}
从我的角度来看,这个问题是下一个:
- 要构建 ClassA 对象,用户还必须导入 Type
- 类型似乎不是 ClassA 的一部分
我的代码适用于 Javascript 吗?描述的问题在 Javascript 中可以吗?有没有更好的方法呢?
我要解决的当前问题是下一个
我有几种类型的用户活动表示为对象。它们有很多相似之处,例如 name、date、duration 等,但必须根据它们的类型显示。
我的解决方案是为所有对象提供基本字段及其类型。
【问题讨论】:
-
您可以将
Type设为ClassA的属性,但这并没有更好。 -
@Ryan,确切地说,也考虑过这一点
-
但在这种情况下,object-enum 将至少是 ClassA 的一部分
-
不要让 ES6
class语法欺骗了你。这是语法糖。 Javascript 中没有类。从来没有,以后也不会。 -
不要试图模仿其他语言的特定行为,而是解释你想要解决的问题。
标签: javascript enums