Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Comportamento do *spread operator*

O método split() retorna um array de string, certo? E no exemplo ao passar um array de strings ["2016", "12", "11"] (Note a indexação do mês começando em 1) a data retornada está correta. Por que o spread operator (aparentemente) modifica o retorno para um array de numbers? (Assumo que é isso que o spread operator faz, pois caso contrário o lógico seria supor que os parâmetros 1, 2 e 3 passados para o construtor seriam strings e a data retornada estaria correta, sendo que ao passar os parâmetros como numbers (exemplo na vídeo-aula) podemos observar que a data está incorreta por conta da indexação do mês).

3 respostas

Spread não converte para número, o tipo de cada elemento se mantém.

solução!

Quen converte é o map! Ao realizar operação de subtração JavaScript faz conversão implícita para number.

let data = new Date(...this._inputData
            .value.split('-')
            .map(function(item, indice) {
                return item - indice % 2; 
            }));

Certo. Entendi. Muito Obrigado.