带对象的 ImmutableJs
ImmutableJs with Object
是否可以这样使用immutablejs:
模态
class PeriodModel {
constructor(
id,
title,
) {
this.id = id;
this.title = title;
}
}
export default PeriodModel;
ImmutableJs
let immutable = Map(new PeriodModel(1, 'title!'));
或者它不再是一成不变的了?通常我会这样做:
let immutable = Map({ id: 1, title: 'title!'});
如果这是好的做法,请告诉我。
我不能说这是好事还是坏事,但你的做法似乎行不通;它不会制作不可变地图,它只会制作 PeriodModel。
我向您的 class 添加了一个方法,toObject
returns 是 class 属性的普通对象。
class PeriodModel {
constructor(
id,
title,
) {
this.id = id;
this.title = title;
}
toObject() {
return {
id: this.id,
title: this.title
}
}
}
const periodMap = Immutable.fromJS(new PeriodModel(1, 'title!').toObject());
const periodMapWithoutMethod = Immutable.fromJS(new PeriodModel(1, 'title!'));
periodMap
将是一个不可变映射,但 periodMapWithoutMethod
将是一个普通对象。
我想你要找的是Record
。
它是一种数据结构,提供的库具有显式字段并且特别适合您要执行的操作。
另一方面,Map
对象只是通用容器。你应该选择你喜欢的一个,Record
对象在 Typescript/Flow 中变得非常有用。
是否可以这样使用immutablejs:
模态
class PeriodModel {
constructor(
id,
title,
) {
this.id = id;
this.title = title;
}
}
export default PeriodModel;
ImmutableJs
let immutable = Map(new PeriodModel(1, 'title!'));
或者它不再是一成不变的了?通常我会这样做:
let immutable = Map({ id: 1, title: 'title!'});
如果这是好的做法,请告诉我。
我不能说这是好事还是坏事,但你的做法似乎行不通;它不会制作不可变地图,它只会制作 PeriodModel。
我向您的 class 添加了一个方法,toObject
returns 是 class 属性的普通对象。
class PeriodModel {
constructor(
id,
title,
) {
this.id = id;
this.title = title;
}
toObject() {
return {
id: this.id,
title: this.title
}
}
}
const periodMap = Immutable.fromJS(new PeriodModel(1, 'title!').toObject());
const periodMapWithoutMethod = Immutable.fromJS(new PeriodModel(1, 'title!'));
periodMap
将是一个不可变映射,但 periodMapWithoutMethod
将是一个普通对象。
我想你要找的是Record
。
它是一种数据结构,提供的库具有显式字段并且特别适合您要执行的操作。
另一方面,Map
对象只是通用容器。你应该选择你喜欢的一个,Record
对象在 Typescript/Flow 中变得非常有用。