Скажем, у меня есть классы 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")]);
}
}
Таким образом, только список групп задач является неизменным. Все, что внутри, - нет. Даже если я делаю Immutable.fromJS(...)
вместо Immutable.List<Board>(...)
, вложенные объекты представляют собой простые объекты JavaScript Javascript.
Неизменяемый JS не предполагает наследование класса (Наследование от объекта с неизменяемым 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
Итак, как создать объекты Immutable класса?