不可变的Js with Object



是否可以像这样使用不可变js:

模 态

class PeriodModel {
constructor(
id,
title,
) {
this.id = id;
this.title = title;
}
}
export default PeriodModel;

不可变的Js

let immutable = Map(new PeriodModel(1, 'title!'));

还是它不再是一成不变的?通常我会这样做:

let immutable = Map({ id: 1, title: 'title!'});

请让我知道这是否是好的做法。

我不能说这是否是好的做法,但你这样做的方式似乎不起作用;它不做一个不可变的地图,它只是做一个周期模型。

我向您的类中添加了一个方法,toObject该方法返回类属性的纯对象。

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中变得非常有用。

相关内容

最新更新