title: ngrx store migration v2 to v4
body: <p>I'm looking into upgrading quite a big angular app which uses ngrx v2. Our reducers, and especially the selectors look like this repo did at the time: <a href="https://github.com/ngrx/example-app/blob/05be2b0c1dd1b1d522adb796bd4c1fce2cc5b366/src/app/reducers/books.ts" rel="nofollow noreferrer">https://github.com/ngrx/example-app/blob/05be2b0c1dd1b1d522adb796bd4c1fce2cc5b366/src/app/reducers/books.ts</a>.</p>
  
  <pre><code>import '@ngrx/core/add/operator/select';
  
  export function getBookEntities(state$: Observable&lt;State&gt;) {
    return state$.select(state =&gt; state.entities);
  }
  
  export const getBookCollection = function (state$: Observable&lt;State&gt;) {
    return combineLatest&lt;{ [id: string]: Book }, string[]&gt;(
      state$.let(getBookEntities),
      state$.let(getCollectionBookIds)
    )
    .map(([ entities, ids ]) =&gt; ids.map(id =&gt; entities[id]));
  };
  </code></pre>
  
  <p>Then to consume the data in a component:</p>
  
  <pre><code>this.books$ = store.let(fromRoot.getBookCollection);
  </code></pre>
  
  <p>The migration guide also says:</p>
  
  <blockquote>
    <p>@ngrx/core is no longer needed, and can conflict with @ngrx/store. You
    should remove it from your project.</p>
  </blockquote>
  
  <p>So when i remove the import '@ngrx/core/add/operator/select' I get tons of "Property 'select' does not exist on type 'Observable'.</p>
  
  <p>Whats the recommended migration path if i don't want to introduce reselect which the example app is using?</p>