Угловой, что означает три точки в @NGRX

что означает именно эти три точки и почему они мне нужны ?

export function leadReducer(state: Lead[]= [], action: Action {
    switch(action.type){
        case ADD_LEAD:
            return [...state, action.payload];
        case REMOVE_LEAD:
            return state.filter(lead => lead.id !== action.payload.id )
}
}

2 ответов


три точки известны как распространение оператор из машинописного текста (также из ES7).

оператор spread возвращает все элементы массива. Как будто вы напишете каждый элемент отдельно:

let myArr = [1, 2, 3];
return [1, 2, 3];
//is the same as:
return [...myArr];

это в основном просто синтаксический сахар, как он компилирует это:

func(...args);

для этого:

func.apply(null, args);

в вашем случае это компилируется так:

return [...state, action.payload];
//gets compiled to this:
return state.concat([action.payload]);

на ...(распространение оператор) работает, возвращая каждое значение из index 0 индекс length-1: