2016-12-11 1 views
0

아래 코드 :Immutable.js를 ES6 클래스와 함께 사용하는 방법은 무엇입니까?

class A {constructor(v) { 
    this.v = v; 
}} 
const a = fromJS(new A({a: 42, someOtherSubTree: {}})); 
const aMod = a.updateIn(['v', 'a'], x=>43); 

중 & hellip;

TypeError: a.set is not a function 

나는 그러나 "포장"접근 방식이 제안하는 방법 그래서 나는 확실하지 않다 '타이프 라이터'로 태그가 this related question을 발견했습니다

TypeError: a.updateIn is not a function 

set 더 단순한를 또한 실패 : 실패 순수한 ES6으로 변환됩니다.

+0

수업을 하시겠습니까? 엄격한 구조와 메소드가 필요한 경우 Immutable.js'Record's https://facebook.github.io/immutable-js/docs/#/Record/Record를 사용할 수 있습니다. 여기 좋은 예가 https : //gist.github.com/prenaudin/f1cad2bda2f2334459f8b006449c91e4#file-1-models-task-js – Strajk

답변

0

const a = fromJS(new A({a: 42, someOtherSubTree: {}})); 다음에 typeof a은 여전히 ​​대상이며 Map은 예상과 비슷합니다. 원래 객체를 반환합니다.

변경 불가능한 코드의이 부분은 이유를 보여줍니다. 객체 A는 "일반 객체"(함수 참조) 또는 배열이 아니므로 그대로 반환됩니다.

function fromJSDefault(json) { 
    if (Array.isArray(json)) { 
     return IndexedSeq(json).map(fromJSDefault).toList(); 
    } 
    if (isPlainObj(json)) { 
     return KeyedSeq(json).map(fromJSDefault).toMap(); 
    } 
    return json; 
} 
// […] 
function isPlainObj(value) { 
    return value && (value.constructor === Object || value.constructor === undefined); 
} 
관련 문제