我正在使用Immuatable.js,并且想扩展Immutable.Record,所以我有一个工作原理相同的类,但添加了一些默认属性和功能。

从源头来看,Record.js是一个ES6类,它扩展了KeyedCollection但从构造函数返回一个函数。

https://github.com/facebook/immutable-js/blob/master/src/Record.js

我真的不明白这样做的副作用。

基本上,我想要一个FooRecord类,可以在其中执行以下操作:

class FooifiedRecord extends FooRecord({
  name: '',
}){
  sayMyName(){
    return this.name;
  }
};


等效于:

class FooifiedRecord extends Immutable.Record({
  name: '',
  foo: '',
}) {
  doFoo(){
    return this.foo + ' bar';
  }
  sayMyName(){
    return this.name;
  }
}


但是我不确定正确的语法。

编辑:与How to construct subclasses of Immutable.Record?不太相似,它涵盖了Immutable.Record的基本用法。我想知道如何扩展它。

最佳答案

如果您不打算使用new实例化基类,则可以执行justinko recommends here的操作:

import { Record } from 'immutable'

const Base = defaultValues => class extends Record({
  id: undefined,
  links: {},
  errors: {},
  ...defaultValues
}) {

}

class User extends Base({
  firstName: undefined,
  lastName: undefined
}) {
  fullName() {
    return this.firstName + ' ' + this.lastName
  }
}

关于javascript - 在Immutable.js中扩展记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42653048/

10-11 17:13