immutable.jsのRecordについてメンバ変数にMap等を使いたい場合の
コンストラクタの定義について教えてください
テスト環境としてjestを使っています。
普通に使う場合には問題ないんですが
jsonからRecordに戻す場合に上手く動作しません。
typescript:record.test.ts
1import { Record, Map } from 'immutable'; 2 3 4const TestRecord = Record({ 5 dict: Map<number, string>() 6}); 7 8class TestModel extends TestRecord { 9 dict: Map<number, string>; 10 constructor(values: any = undefined) { 11 super(values); 12 return <TestModel>this.set('dict', Map<number, string>(this.dict)); 13 } 14 setName(id: number, name: string): TestModel { 15 return <TestModel>this.updateIn(['dict'], (dict: Map<number, string>) => (dict.set(id, name))); 16 } 17 getName(id: number): string { 18 return this.dict.get(id); 19 } 20} 21 22test('test TestModel', () => { 23 let t = new TestModel({ 24 dict: { 0: 'jhon' } 25 }); 26 // console.log(t.toJS()); 27 // let t = new TestModel(); 28 // t = t.setName(0, 'jhon'); 29 // t = t.setName(1, 'mike'); 30 // console.log(t.toJS()); 31 expect(t.getName(0)).toBe('jhon'); 32}); 33
実行結果
FAIL xxxx/__test__/record.test.ts ● test TestModel expect(received).toBe(expected) Expected value to be (using ===): "jhon" Received: undefined Difference: Comparing two different types of values. Expected string but received undefined. at Object.<anonymous> (xxx/__test__/record.test.ts:31:24) at process._tickCallback (internal/process/next_tick.js:109:7) ✕ test TestModel (64ms)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。