In my component system I also used to have entityId and typeId. However, after some refactoring I did, I realized I didn't need them at all anymore! Any code that is operating on a Component already knows what type it is (or doesn't care), and knows which entity it came from. So I ended up removing them (saving 8 bytes per component). This will really depend on your particular implementation though (I see more reason for requiring entityId than typeId).
In my case I still have a Component base class. But it only contains pure virtual functions (mainly for serialization, which subclasses are required to implement, and also for a Reset() method, since I pool and re-use components).
Though in this case you might consider instead of the type id being a member variable, making the type id a virtual function that the child classes implement. This would also be a good candidate for a pure virtual function.
That saves memory, at the cost of requiring a virtual method call every time you need to get the type id. Not saying that's good or bad, but that's something to think about.