class DateHelper{
constructor(){
throw new Error('Você não pode criar uma instância dessa classe');
}
static #textoParaData(texto){
if(!/\d{4}-\d{2}-\d{2}/.test(texto))
throw new Error('Data deve está no formato aaaa-mm-dd')
return new Date(...texto.split('-').map((item,indice)=> item - indice % 2 ))
}
static #dataParaTexto(data){
return `${('0' + data.getDate()).slice(-2)}/${('0' + (parseInt(data.getMonth())+1)).slice(-2)}/${data.getFullYear()}`
}
static textoParaData(texto){
return this.#textoParaData(texto)
}
static dataParaTexto(data){
return this.#dataParaTexto(data)
}
}
Classe listaNegociacoes
class ListaNegociacoes{
#listaNegociacoes;
constructor(){
this.#listaNegociacoes = [];
}
#adiciona(negociacao){
this.#listaNegociacoes.push(negociacao);
}
adiciona(negociacao){
return this.#adiciona(negociacao);
}
get #negociacoes(){
return this.#listaNegociacoes;
}
}
class NegociacaoController {
#inputData;
#inputQuantidade;
#inputValor;
#form;
#listaNegociacoes
constructor() {
let $ = document.querySelector.bind(document);
this.#form = $('.form');
this.#inputData = $('#data');
this.#inputQuantidade = $('#quantidade');
this.#inputValor = $('#valor');
this.#listaNegociacoes = new ListaNegociacoes()
}
adiciona(evento) {
evento.preventDefault();
this.#listaNegociacoes.adiciona(this.#criarNegociacao())
this.#limpaCampo();
}
#criarNegociacao() {
return new Negociacao(DateHelper.textoParaData(this.#inputData.value), this.#inputQuantidade.value, this.#inputValor.value)
}
#limpaCampo() {
this.#form.reset();
this.#inputData.focus();
}
}
sei que é um recurso relativamente novo para o JavaScript só quero saber se seu uso no meu código está correto, e o que pode-se melhorado ? e outra pergunta é viável continua usando "#" nos meus códigos ?