Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的类型化不可变对象_Javascript_Reactjs_Immutability_Reactjs Flux_Immutable.js - Fatal编程技术网

javascript中的类型化不可变对象

javascript中的类型化不可变对象,javascript,reactjs,immutability,reactjs-flux,immutable.js,Javascript,Reactjs,Immutability,Reactjs Flux,Immutable.js,我正在尝试在React-Flux类应用程序中组织数据类型。我所有的数据对象都是不可变的,对于集合,我使用immutable.js,这是一个完美的库。但对于类型化对象,我使用自己的类。我认为这不是最好的解决方案,但我需要以某种方式处理默认值、内部一致性、数据验证、向该对象添加方法等 有没有专门的图书馆 您是否也为此类对象使用immutable.js集合?那么您在其他地方处理数据、验证和其他功能的一致性 还是使用普通类 您认为在基于React/Flux的应用程序中使用类型化对象是个好主意吗 下面

我正在尝试在React-Flux类应用程序中组织数据类型。我所有的数据对象都是不可变的,对于集合,我使用immutable.js,这是一个完美的库。但对于类型化对象,我使用自己的类。我认为这不是最好的解决方案,但我需要以某种方式处理默认值、内部一致性、数据验证、向该对象添加方法等

  • 有没有专门的图书馆
  • 您是否也为此类对象使用immutable.js集合?那么您在其他地方处理数据、验证和其他功能的一致性
  • 还是使用普通类
  • 您认为在基于React/Flux的应用程序中使用类型化对象是个好主意吗
下面是我所指的对象类型的示例,以及我如何使用它的简单示例

class Event extends MyImmutableLib {
     constructor(plain) {
          this.start = plain.start;
          this.end = plain.end;
          this.name = plain.name || "unnamed event"; // some default value
          this.attendants = plain.attendants || [];
          this.valid = plain.start < plain.end; // simple check of validity, I can also throw exception if it is needed
          Object.freeze(this); // I use freeze to be sure I don't accidentally change the object
     }
     getDuration() {
          return this.end - plain.start; // methods are sometimes useful
     }
     addAttendant(newPerson) { 
          return this.set("attendants", this.attendants.concat([newPerson])) //immutable edit, so I return new object
     }
}

var someEvent = new Event({start: new Date("2015-02-29"), end: new Date("2012-02-30")}) //
var jsMeetup =  someEvent.set("name", "9th Js Meetup, Brno")
var jsMeetup = jsMeetup.addAttendant("Joe");

console.log(jsMeetup.name, jsMeetup.getDuration())
类事件扩展MyImmutableLib{
建造师(普通){
this.start=plain.start;
this.end=plain.end;
this.name=plain.name | |“未命名事件”;//一些默认值
this.attendars=plain.attendars | |[];
this.valid=plain.start
最好是有以下设施的图书馆:

  • 类型化对象—这样我可以更好地组织数据
  • 默认值
  • 验证
  • 方法
  • 不变性特定函数

您是否正在查找记录?谢谢,我不知道。如果它适合我的需要,我明天就试试。你知道有哪个项目(真实世界或演示)在哪里使用它吗?immutable.js?Facebook的用户将其用于各种项目。当然,正如你自己所说,它与React配合得非常好,所以我相信还有其他React开发人员使用它。投票关闭是因为它需要场外资源,过于广泛,主要基于观点,并且在一个问题中提出多个问题。这些都是好问题,但这不是关于StackOverflow的主题。