【发布时间】:2017-06-03 16:17:24
【问题描述】:
我正在尝试将 immutable.js 引入 Angular2 项目,但在使用带有 immutable.js 的 typescript 类时遇到问题。
我正在尝试使用 Immutable.fromJS 函数将来自类的可变对象深度转换为不可变对象。不幸的是,虽然 fromJS 在 json 对象上工作得很好,但如果给定了来自某个类的对象,它什么也不做(或者在尝试调用 .toJS() 到生成的对象时抛出)。
class Person {
public firstName: string;
}
let p = new Person();
p.firstName = 'Mike';
console.log(p);
let immutablePersonFail = Immutable.fromJS(p);
console.log(Immutable.Map.isMap(immutablePersonFail)); // returns false
let immutablePersonSuccess = Immutable.fromJS({firstName: 'Nick'});
console.log(Immutable.Map.isMap(immutablePersonSuccess)); // returns true
这里是 jsbin 演示问题: https://jsbin.com/yefeha/edit?js,console
【问题讨论】:
-
这可能是因为
p是一个类实例而不是一个“普通对象”,检查this thread I just answered recently