Immutablejs doesn’t work very well with typescript. But I can patch types myself for some perceived type safety:
import {Map,fromJS} from 'immutable';
interface TypedMap<T> extends Map<any, any> {
  toJS(): T;
  get<K extends keyof T>(key: K, notSetValue?: T[K]): T[K];
}
interface User {
  name: string;
  points: number;
}
const users = List() as List<TypedMap<User>>;
users.forEach(u => {
  const aString = u.name
  const aNumber = u.points
});