javascript - 使用 ImmutableJS Record 创建具有不同属性的子类

标签 javascript ecmascript-6 immutable.js

我们使用 ES6 和 immutable.js 来创建不可变的类。

class Animal extends Record({foo: ""});

我如何继承 Animal 并添加自定义属性,但仍然能够将其用作不可变的 Record

class Animal extends Animal {}; // How to add the key "bar"?

最佳答案

Record 方法将创建的类型锁定到 defaultValues 并且不能用于进一步扩展属性。这是我提到的提示之一 here .

如果你不太热衷于在运行时检查继承(instanceof),那么你可以这样做——

let foo = {foo: ""};
class Animal extends Immutable.Record(foo){}
let bar = {bar: ""};
class Mammals extends Immutable.Record(Object.assign({}, foo, bar)){}

虽然不能替代真正的继承,但它可以让您稍微重用模式。方法不会以这种方式继承。

关于javascript - 使用 ImmutableJS Record 创建具有不同属性的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37574103/

相关文章:

javascript - Promise 延迟 ajax api jQuery

javascript - 正则表达式、括号之间的捕获、javascript

javascript - 静态变量 JavaScript ECMA6

javascript - 为什么闭包中绑定(bind)的窗口 onload 总是不运行

javascript - JavaScript 中的 JQuery `.blur()`

node.js - 为什么要转译 Node.js 后端代码?

javascript - 用于 Flexbox 的 Object.assign 和动态 css 样式 - 特定于 codepen

immutable.js - 如何计算 ImmutableJS 中两个 Map 之间的差异?

javascript - 使用 React Immutability helpers 或 Immutable js React 合并不可变对象(immutable对象)数组

javascript - map() 函数内的索引