Jumping from regular old js with ang1 to ang2 with typescript and redux etc is a heck of a steep climb.
http://blog.ng-book.com/introduction-to-redux-with-typescript-and-angular-2/#deleting-an-item-without-mutation shows this as an example with redux:
...state.messages.slice(idx + 1, state.messages.length)
The three dots represent the rest operator and it is used to get the arguments list passed to function on invocation and in array destructure. A case when the operator gathers the rest remained after the operation.
The spread operator is used for array construction and destructuring, and to fill function arguments from an array on invocation. A case when the operator spreads the array (or iterable object) elements.
You can read more about this here.