Fazendo alguns testes nos exercícios do curso até aqui, em especial na criação de métodos estáticos, estou encontrando um erro que não localizei o motivo:
Essa é a minha classe NegociacaoController
class NegociacaoController {
constructor(){
let $ = document.querySelector.bind(document);
this._inputData = $('#data');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
this._contador = 0;
}
adiciona(event) {
event.preventDefault();
console.log(this._inputData.value);
console.log(this._inputQuantidade.value);
console.log(this._inputValor.value);
console.log("RAW DO CAMPO:");
console.log(this._inputData);
console.log(this._inputData.className);
console.log(this._inputData.id);
console.log(this._inputData.getAttribute("diogenes"));
console.log(this._inputData.setAttribute("diogenes","teste2")); //hasAttribute(name) TRUE | FALSE
/*
Observe ainda que se inserirmos uma data com caracteres adicionais à esquerda ou à direita,
o erro não será lançado. Por exemplo, se definirmos a data 30/09/20199, o ano será truncado
para os primeiros dígitos. Se informarmos ao método a data 130/09/2019, o dia será truncado
para os 2 últimos dígitos.
Para que a validação funcione corretamente, acrescente marcadores na expressão regular para
indicar que queremos validar o texto exato, e nenhum caracter a mais:
*/
if(!/^\d{4}-\d{2}-\d{2}$/.test(this._inputData.value)) throw new Error('Deve estar no formato aaaa-mm-dd');
// CONVERTER A DATA PARA DIA MÊS ANO
let data = DateHelper().converterData(new Date(this._inputData.value.split('-')));
// POPULAR VALORES
let negociacao = new Negociacao(
data,
this._inputQuantidade.value,
this._inputValor.value
);
console.log(negociacao);
}
}
Essa é a minha classe DateHelper.js
class DateHelper {
constructor() {
throw new Error('DateHelper não pode ser instanciada');
}
static converterData(tempData) {
return tempData.getDate()
+ '/' + (tempData.getMonth() + 1)
+ '/' + tempData.getFullYear();
}
}
Quando eu chamo o método estático com
let data = DateHelper().converterData(new Date(this._inputData.value.split('-')));
O seguinte erro é retornado
Uncaught TypeError: Class constructor DateHelper cannot be invoked without 'new'
Quando eu adiciono o "New":
Uncaught Error: DateHelper não pode ser instanciada (porque meu método é estático)
Dai não entendi o que pode ser, já que o método "static" não precisa do New
Obrigado