【发布时间】:2016-04-17 05:51:42
【问题描述】:
假设我有课程 Task 和 TaskGroup
class Task{
constructor(public text:string){}
}
class TaskGroup {
constructor(public title:string = "new task group", public tasks:Task[] = []){}
}
然后在我的 Angular 2 服务中,我将创建一个不可变的任务组列表
@Injectable()
class TaskService {
taskGroups:Immutable.List<TaskGroup>;
constructor() {
this.taskGroups = Immutable.List<TaskGroup>([new TaskGroup("Coding tasks")]);
}
}
这种方式只有 taskGroups List 是不可变的。里面的东西都不是。即使我使用Immutable.fromJS(...) 而不是Immutable.List<Board>(...),嵌套对象也是普通的 Javascript 对象。
不可变的 JS 不应该继承类 (Inheriting from Immutable object with ES6 #562)
//can't do this!
class TaskGroup extends Immutable.Map<string, any>{
constructor(public title:string = "new task group", public tasks:Task[]){}
}
//it complained about the class not having methods like set, delete etc
那么如何创建不可变类对象呢?
【问题讨论】:
-
你可能想看看这个link ;)
-
@Kutyel 包装器是一个不错的概念。也许你应该把它写成文章的答案和链接。
-
完成,感谢您的建议^_^
标签: javascript typescript ecmascript-6 angular immutable.js