title: Jest expect.any() not working as expected
body: <p>So when testing one of my <strong>reducers</strong> in a Preact(not much different to React while testing with JEST) based project, I got bumped into this issue:</p>
  
  <p>Following output comes up when running jest test - </p>
  
  <pre><code>● should setup 
  
      expect(received).toEqual(expected)
  
      Expected value to equal:
        {"ID": Any&lt;String&gt;, "active": true, "data": Any&lt;Array&gt;}
      Received:
        {"ID": "BysnEuMlm", "active": true, "data": [{"ID": "Hy7wMAz1lm", "code": "dat.fle", "label": "CRES/datum14.cdata", "name": "File", "status": "READY", "value": {"format": "cdata", "name": "datum14.cdata", "path": "CRES"}}, {"ID": "rkB7RMkeX", "code": "prp.kcv", "label": "3 folds", "name": "k-Fold Cross-Validation", "status": "READY", "value": "3"}, {"ID": "ByCmRfygQ", "code": "ats", "label": undefined, "name": " Best First +  Cfs Subset Eval", "status": "READY", "value": {"evaluator": {"name": "CfsSubsetEval"}, "search": {"name": "BestFirst", "options": ["-D", "1", "-N", "5"]}, "use": true}}, {"ID": "HkmVAM1l7", "code": "lrn", "label": undefined, "name": "Naive Bayes", "status": "READY", "value": {"label": "Naive Bayes", "name": "bayes.NaiveBayes", "use": true}}], "output": {"format": "pipeline", "name": "jestReact.cpipe", "path": "/home/rupav/opensource/candis/CRES"}}
  
      Difference:
  
      - Expected
      + Received
  
        Object {
      -   "ID": Any&lt;String&gt;,
      +   "ID": "BysnEuMlm",
          "active": true,
      -   "data": Any&lt;Array&gt;,
      +   "data": Array [
      +     Object {
      +       "ID": "Hy7wMAz1lm",
      +       "code": "dat.fle",
      +       "label": "CRES/datum14.cdata",
      +       "name": "File",
      +       "status": "READY",
      +       "value": Object {
      +         "format": "cdata",
      +         "name": "datum14.cdata",
      +         "path": "CRES",
      +       },
      +     },
      +     Object {
      +       "ID": "rkB7RMkeX",
      +       "code": "prp.kcv",
      +       "label": "3 folds",
      +       "name": "k-Fold Cross-Validation",
      +       "status": "READY",
      +       "value": "3",
      +     },
      +     Object {
      +       "ID": "ByCmRfygQ",
      +       "code": "ats",
      +       "label": undefined,
      +       "name": " Best First +  Cfs Subset Eval",
      +       "status": "READY",
      +       "value": Object {
      +         "evaluator": Object {
      +           "name": "CfsSubsetEval",
      +         },
      +         "search": Object {
      +           "name": "BestFirst",
      +           "options": Array [
      +             "-D",
      +             "1",
      +             "-N",
      +             "5",
      +           ],
      +         },
      +         "use": true,
      +       },
      +     },
      +     Object {
      +       "ID": "HkmVAM1l7",
      +       "code": "lrn",
      +       "label": undefined,
      +       "name": "Naive Bayes",
      +       "status": "READY",
      +       "value": Object {
      +         "label": "Naive Bayes",
      +         "name": "bayes.NaiveBayes",
      +         "use": true,
      +       },
      +     },
      +   ],
      +   "output": Object {
      +     "format": "pipeline",
      +     "name": "jestReact.cpipe",
      +     "path": "/home/rupav/opensource/candis/CRES",
      +   },
        }
  </code></pre>
  
  <p>Following is the test case:</p>
  
  <pre><code>test('should setup ', () =&gt; {
      const state = documentProcessor(
          undefined,
          {
              type: ActionType.Asynchronous.READ_SUCCESS,
              payload: dokuments.active
      })
      // expect(state.active.ID).toEqual(expect.any(String)) - Test case passes iff I run this test with this command only.
      expect(state.active).toEqual({
          data: expect.any(Array),
          active: true,
          ID: expect.any(String),
      })
  
  })
  </code></pre>
  
  <p>Since state gets changed while calling that reducer, I needed to use <code>expect.any</code> function, but as per the output, although types are same, test is not getting passed.
  Rather in expected its showing up <code>Any&lt;String&gt;</code>.</p>