What are the differences? It says in these instructions initial state to be empty array but then the solution has previousState as empty array? Are they all interchangeable because they are all past versions of state?
There is no difference. The name prevState is just that…a random name. The lesson/challenge just hopes to explain the fact that instead of writing this:
const initialState = []; // Most applications will use this
// method, because most applications have
// an initial state much more verbose.
const messageReducer = (prevState = initialState, action) => {...}
However, it is important to remember that, if there is a value passed to the reducer (not []), then prevState, as a name, describes the fact that the state changes, and whatever the reducer returns should be some change upon the previous state.